bug-gawk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: double free error in gawk


From: Andrew J. Schorr
Subject: Re: double free error in gawk
Date: Wed, 1 Jul 2020 22:33:21 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

Most of that debugging output is from the parsing phase. Running
under the debugger, one sees this:

[schorr@ajs-x1 ~/gawk]$ cat bug.awk
BEGIN {
        $0 = "a0 b"
        gsub(/0/, "", $1)
        $2 == "b"
        $0 = ""
}

[schorr@ajs-x1 ~/gawk]$ ./gawk -D -M -f bug.awk
...
gawk> run
Starting program:
debug: r_unref(0x1816c70)
debug: r_getblock(size 112) -> 0x1816c70
debug: r_unref(0x1816c70)
debug: r_getblock(size 112) -> 0x1816c70
debug: r_getblock(size 112) -> 0x1822870
debug: mpz_init(0x1822870) 0x185aec0
debug: mpg_make_number(0x1822870) to 1 at 0x185aec0
debug: r_unref(0x1822870)
debug: mpz_clear(0x1822870): 0x1822870  _mp_alloc 1 _mp_size 1 mp_d 0x185aec0
debug: r_getblock(size 112) -> 0x1822870
debug: mpgz_zero(0x1822870) 0x185aec0
debug: r_getblock(size 112) -> 0x1822730
debug: r_getblock(size 112) -> 0x1822690
debug: r_unref(0x1822870)
debug: mpz_clear(0x1822870): 0x1822870  _mp_alloc 1 _mp_size 0 mp_d 0x185aec0
debug: r_unref(0x1816c70)
debug: r_getblock(size 112) -> 0x1816c70
debug: r_unref(0x1822690)
debug: mpz_clear(0x1822690): 0x1822690  _mp_alloc 1 _mp_size 0 mp_d 0x185aec0
free(): double free detected in tcache 2
Abort (core dumped)

Or stepping through:

Stopping in BEGIN ...
Breakpoint 1, main() at `bug.awk':2
2               $0 = "a0 b"
gawk> step
debug: r_unref(0xe3ec70)
3               gsub(/0/, "", $1)
gawk> step
debug: r_getblock(size 112) -> 0xe3ec70
debug: r_unref(0xe3ec70)
debug: r_getblock(size 112) -> 0xe3ec70
debug: r_getblock(size 112) -> 0xe4a870
debug: mpz_init(0xe4a870) 0xe830d0
debug: mpg_make_number(0xe4a870) to 1 at 0xe830d0
debug: r_unref(0xe4a870)
debug: mpz_clear(0xe4a870): 0xe4a870  _mp_alloc 1 _mp_size 1 mp_d 0xe830d0
4               $2 == "b"
gawk> step
debug: r_getblock(size 112) -> 0xe4a870
debug: mpgz_zero(0xe4a870) 0xe839c0
5               $0 = ""
gawk> step
debug: r_getblock(size 112) -> 0xe4a730
debug: r_getblock(size 112) -> 0xe4a690
debug: r_unref(0xe4a870)
debug: mpz_clear(0xe4a870): 0xe4a870  _mp_alloc 1 _mp_size 0 mp_d 0xe839c0
debug: r_unref(0xe3ec70)
debug: r_getblock(size 112) -> 0xe3ec70
debug: r_unref(0xe4a690)
debug: mpz_clear(0xe4a690): 0xe4a690  _mp_alloc 1 _mp_size 0 mp_d 0xe839c0
free(): double free detected in tcache 2
Abort (core dumped)

Regards,
Andy

On Wed, Jul 01, 2020 at 03:23:43PM -0400, Andrew J. Schorr wrote:
> On Thu, Jul 02, 2020 at 02:40:46AM +0900, NIDE, Naoyuki wrote:
> > Thanks. After replacing MPFR and GMP, double free does disappear.
> > However, a larger AWK script still does not produce proper output.
> > It seems to take time to create the smallest example that causes
> > anomalies. I will try again later.
> 
> I do suspect there's a gawk issue. If I instrument mpfr.c:mpg_zero
> to show the value of n->mpg_i->_mp_d, and I show that value
> as well in mpfr_unset, it does look like the same item is freed twice.
> It's going to take more troubleshooting to figure this out. But
> with the attached mess of a debugging patch and building
> with .developing so MEMDEBUG is enabled, on Fedora 32, I see this:
> 
> GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.0.2-p7, GNU MP 6.1.2)
> 
> [schorr@ajs-x1 ~/gawk]$ ./gawk -M 'BEGIN{$0 = "a0 b"; gsub(/0/, "", $1); $2 
> == "b"; $0 = ""}'
> debug: r_getblock(size 112) -> 0xc997c0
> debug: r_getblock(size 112) -> 0xc99c70
> debug: r_getblock(size 112) -> 0xc99cf0
> debug: r_getblock(size 112) -> 0xc99d90
> debug: r_getblock(size 112) -> 0xc99e30
> debug: r_getblock(size 48) -> 0xc99f20
> debug: r_getblock(size 112) -> 0xc99f80
> debug: r_getblock(size 112) -> 0xc9a020
> debug: r_getblock(size 48) -> 0xc9a0a0
> debug: r_getblock(size 112) -> 0xc9a6e0
> debug: r_getblock(size 112) -> 0xc9a780
> debug: r_getblock(size 48) -> 0xc9a870
> debug: r_getblock(size 112) -> 0xc9a8b0
> debug: mpz_init(0xc9a8b0) 0xc9a930
> debug: mpg_make_number(0xc9a8b0) to 0 at 0xc9a930
> debug: r_getblock(size 112) -> 0xc9a970
> debug: r_getblock(size 112) -> 0xc9aa10
> debug: r_getblock(size 48) -> 0xc9aa90
> debug: r_getblock(size 112) -> 0xc9aad0
> debug: mpz_init(0xc9aad0) 0xc9ab50
> debug: mpg_make_number(0xc9aad0) to 0 at 0xc9ab50
> debug: r_getblock(size 112) -> 0xc9ab90
> debug: r_getblock(size 112) -> 0xc9ac30
> debug: r_getblock(size 48) -> 0xc9acb0
> debug: r_getblock(size 112) -> 0xc9acf0
> debug: r_getblock(size 112) -> 0xc9ade0
> debug: r_getblock(size 112) -> 0xc9ae80
> debug: r_getblock(size 48) -> 0xc9af00
> debug: r_getblock(size 112) -> 0xc9af40
> debug: r_getblock(size 112) -> 0xc9b000
> debug: r_getblock(size 112) -> 0xc9b0a0
> debug: r_getblock(size 48) -> 0xc9b120
> debug: r_getblock(size 112) -> 0xc9b160
> debug: r_getblock(size 112) -> 0xc9b220
> debug: r_getblock(size 112) -> 0xc9b2c0
> debug: r_getblock(size 48) -> 0xc9b340
> debug: r_getblock(size 112) -> 0xc9b380
> debug: r_getblock(size 112) -> 0xc9b440
> debug: r_getblock(size 112) -> 0xc9b4e0
> debug: r_getblock(size 48) -> 0xc9b560
> debug: r_getblock(size 112) -> 0xc9b5a0
> debug: mpz_init(0xc9b5a0) 0xc9b620
> debug: mpg_make_number(0xc9b5a0) to 0 at 0xc9b620
> debug: r_getblock(size 112) -> 0xc9b660
> debug: r_getblock(size 112) -> 0xc9b700
> debug: r_getblock(size 48) -> 0xc9b780
> debug: r_getblock(size 112) -> 0xc9b7c0
> debug: r_getblock(size 112) -> 0xc9b880
> debug: r_getblock(size 112) -> 0xc9b920
> debug: r_getblock(size 48) -> 0xc9b9a0
> debug: r_getblock(size 112) -> 0xc9b9e0
> debug: r_getblock(size 112) -> 0xc9baa0
> debug: r_getblock(size 112) -> 0xc9bb40
> debug: r_getblock(size 48) -> 0xc9bbc0
> debug: r_getblock(size 112) -> 0xc9bc00
> debug: mpz_init(0xc9bc00) 0xc9bc80
> debug: mpg_make_number(0xc9bc00) to 0 at 0xc9bc80
> debug: r_getblock(size 112) -> 0xc9bcc0
> debug: r_getblock(size 112) -> 0xc9bd60
> debug: r_getblock(size 48) -> 0xc9bde0
> debug: r_getblock(size 112) -> 0xc9be20
> debug: mpz_init(0xc9be20) 0xc9bea0
> debug: mpg_make_number(0xc9be20) to 0 at 0xc9bea0
> debug: r_getblock(size 112) -> 0xc9bee0
> debug: r_getblock(size 112) -> 0xc9bf80
> debug: r_getblock(size 48) -> 0xc9c000
> debug: r_getblock(size 112) -> 0xc9c040
> debug: mpz_init(0xc9c040) 0xc9c0c0
> debug: mpg_make_number(0xc9c040) to 53 at 0xc9c0c0
> debug: r_getblock(size 112) -> 0xc9c100
> debug: r_getblock(size 112) -> 0xc9c1a0
> debug: r_getblock(size 48) -> 0xc9c220
> debug: r_getblock(size 112) -> 0xc9c260
> debug: mpz_init(0xc9c260) 0xc9c2e0
> debug: mpg_make_number(0xc9c260) to -1 at 0xc9c2e0
> debug: r_getblock(size 112) -> 0xc9c320
> debug: r_getblock(size 112) -> 0xc9c3c0
> debug: r_getblock(size 48) -> 0xc9c440
> debug: r_getblock(size 112) -> 0xc9c480
> debug: mpz_init(0xc9c480) 0xc9c500
> debug: mpg_make_number(0xc9c480) to 0 at 0xc9c500
> debug: r_getblock(size 112) -> 0xc9c540
> debug: r_getblock(size 112) -> 0xc9c5e0
> debug: r_getblock(size 48) -> 0xc9c660
> debug: r_getblock(size 112) -> 0xc9c6a0
> debug: r_getblock(size 112) -> 0xc9c760
> debug: r_getblock(size 112) -> 0xc9c800
> debug: r_getblock(size 48) -> 0xc9c880
> debug: r_getblock(size 112) -> 0xc9c8c0
> debug: r_getblock(size 112) -> 0xc9c9a0
> debug: r_getblock(size 112) -> 0xc9ca40
> debug: r_getblock(size 48) -> 0xc9cac0
> debug: r_getblock(size 112) -> 0xc9cb00
> debug: r_getblock(size 112) -> 0xc9cbc0
> debug: r_getblock(size 112) -> 0xc9cc60
> debug: r_getblock(size 48) -> 0xc9cce0
> debug: r_getblock(size 112) -> 0xc9cd20
> debug: mpz_init(0xc9cd20) 0xc9cda0
> debug: mpg_make_number(0xc9cd20) to 0 at 0xc9cda0
> debug: r_getblock(size 112) -> 0xc9cde0
> debug: r_getblock(size 112) -> 0xc9ce80
> debug: r_getblock(size 48) -> 0xc9cf00
> debug: r_getblock(size 112) -> 0xc9cf40
> debug: r_getblock(size 112) -> 0xc9d000
> debug: r_getblock(size 112) -> 0xc9d0a0
> debug: r_getblock(size 48) -> 0xc9d120
> debug: r_getblock(size 112) -> 0xc9d160
> debug: r_getblock(size 112) -> 0xc9d220
> debug: r_getblock(size 112) -> 0xc9d2c0
> debug: r_getblock(size 48) -> 0xc9d340
> debug: r_getblock(size 112) -> 0xc9d380
> debug: mpz_init(0xc9d380) 0xc9d400
> debug: mpg_make_number(0xc9d380) to 0 at 0xc9d400
> debug: r_getblock(size 112) -> 0xc9d440
> debug: r_getblock(size 112) -> 0xc9d4e0
> debug: r_getblock(size 48) -> 0xc9d560
> debug: r_getblock(size 112) -> 0xc9d5a0
> debug: r_getblock(size 112) -> 0xc9d660
> debug: r_getblock(size 112) -> 0xc9d700
> debug: r_getblock(size 48) -> 0xc9d780
> debug: r_getblock(size 112) -> 0xc9d7c0
> debug: r_getblock(size 112) -> 0xc9d880
> debug: r_getblock(size 112) -> 0xc9d920
> debug: r_getblock(size 48) -> 0xc9d9a0
> debug: r_getblock(size 112) -> 0xc9d9e0
> debug: r_getblock(size 112) -> 0xc9daa0
> debug: r_getblock(size 112) -> 0xc9db40
> debug: r_getblock(size 48) -> 0xc9dbc0
> debug: r_getblock(size 112) -> 0xc9dc00
> debug: r_getblock(size 112) -> 0xc9dca0
> debug: r_getblock(size 48) -> 0xc9ddb0
> debug: r_getblock(size 112) -> 0xc9ddf0
> debug: r_getblock(size 112) -> 0xc9de90
> debug: r_getblock(size 48) -> 0xc9df30
> debug: r_getblock(size 112) -> 0xc9df70
> debug: r_getblock(size 112) -> 0xc9e010
> debug: r_getblock(size 48) -> 0xc9e0b0
> debug: r_getblock(size 112) -> 0xc9e0f0
> debug: r_getblock(size 112) -> 0xc9e190
> debug: r_getblock(size 48) -> 0xc9e230
> debug: r_getblock(size 112) -> 0xc9e270
> debug: r_getblock(size 112) -> 0xc9e310
> debug: r_getblock(size 48) -> 0xc9e3b0
> debug: r_getblock(size 112) -> 0xc9e3f0
> debug: r_getblock(size 112) -> 0xc9e490
> debug: mpz_init(0xc9e490) 0xc9e510
> debug: mpg_make_number(0xc9e490) to 9.22337e+18 at 0xc9e510
> debug: r_getblock(size 48) -> 0xc9e530
> debug: r_getblock(size 112) -> 0xc9e570
> debug: r_getblock(size 112) -> 0xc9e610
> debug: mpz_init(0xc9e610) 0xc9e690
> debug: mpg_make_number(0xc9e610) to 1 at 0xc9e690
> debug: r_getblock(size 48) -> 0xc9e6b0
> debug: r_getblock(size 112) -> 0xc9e6f0
> debug: r_getblock(size 112) -> 0xc9e790
> debug: mpz_init(0xc9e790) 0xc9e810
> debug: mpg_make_number(0xc9e790) to 3 at 0xc9e810
> debug: r_getblock(size 48) -> 0xc9e830
> debug: r_getblock(size 112) -> 0xc9e870
> debug: r_getblock(size 112) -> 0xc9e910
> debug: mpz_init(0xc9e910) 0xc9e990
> debug: mpg_make_number(0xc9e910) to 0 at 0xc9e990
> debug: r_getblock(size 48) -> 0xc9e9b0
> debug: r_getblock(size 112) -> 0xc9e9f0
> debug: r_getblock(size 112) -> 0xc9ea90
> debug: mpz_init(0xc9ea90) 0xc9eb10
> debug: mpg_make_number(0xc9ea90) to 114683 at 0xc9eb10
> debug: r_getblock(size 48) -> 0xc9eb30
> debug: r_getblock(size 112) -> 0xc9eb70
> debug: r_getblock(size 112) -> 0xc9ec10
> debug: mpz_init(0xc9ec10) 0xc9ec90
> debug: mpg_make_number(0xc9ec10) to 114683 at 0xc9ec90
> debug: r_getblock(size 48) -> 0xc9ecb0
> debug: r_getblock(size 112) -> 0xc9ecf0
> debug: r_getblock(size 112) -> 0xc9ed90
> debug: mpz_init(0xc9ed90) 0xc9ee10
> debug: mpg_make_number(0xc9ed90) to 112133 at 0xc9ee10
> debug: r_getblock(size 48) -> 0xc9ee30
> debug: r_getblock(size 112) -> 0xc9ee70
> debug: r_getblock(size 112) -> 0xc9ef10
> debug: mpz_init(0xc9ef10) 0xc9ef90
> debug: mpg_make_number(0xc9ef10) to 1000 at 0xc9ef90
> debug: r_getblock(size 48) -> 0xc9efb0
> debug: r_getblock(size 112) -> 0xc9eff0
> debug: r_getblock(size 112) -> 0xc9f090
> debug: mpz_init(0xc9f090) 0xc9f110
> debug: mpg_make_number(0xc9f090) to 1000 at 0xc9f110
> debug: r_getblock(size 48) -> 0xc9f130
> debug: r_getblock(size 112) -> 0xc9f170
> debug: r_getblock(size 112) -> 0xc9f210
> debug: mpz_init(0xc9f210) 0xc9f290
> debug: mpg_make_number(0xc9f210) to 1000 at 0xc9f290
> debug: r_getblock(size 48) -> 0xc9f2b0
> debug: r_getblock(size 112) -> 0xc9f2f0
> debug: r_getblock(size 112) -> 0xc9f390
> debug: mpz_init(0xc9f390) 0xc9f410
> debug: mpg_make_number(0xc9f390) to 1000 at 0xc9f410
> debug: r_getblock(size 48) -> 0xc9f430
> debug: r_getblock(size 112) -> 0xc9f470
> debug: r_getblock(size 112) -> 0xc9f510
> debug: r_getblock(size 48) -> 0xc9f5b0
> debug: r_getblock(size 112) -> 0xc9f5f0
> debug: r_getblock(size 112) -> 0xc9f690
> debug: mpz_init(0xc9f690) 0xc9f710
> debug: mpg_make_number(0xc9f690) to 135 at 0xc9f710
> debug: r_getblock(size 48) -> 0xc9f730
> debug: r_getblock(size 112) -> 0xc9f770
> debug: r_getblock(size 112) -> 0xc9f810
> debug: mpz_init(0xc9f810) 0xc9f890
> debug: mpg_make_number(0xc9f810) to 1000 at 0xc9f890
> debug: r_getblock(size 48) -> 0xc9f8b0
> debug: r_getblock(size 112) -> 0xc9f8f0
> debug: r_getblock(size 112) -> 0xc9f970
> debug: mpz_init(0xc9f970) 0xc9f9f0
> debug: mpg_make_number(0xc9f970) to 0 at 0xc9f9f0
> debug: r_getblock(size 112) -> 0xc9fa10
> debug: r_getblock(size 112) -> 0xc9fb00
> debug: r_getblock(size 48) -> 0xc9fbf0
> debug: r_getblock(size 112) -> 0xc9fb00
> debug: mpz_init(0xc9fb00) 0xca0b10
> debug: mpg_make_number(0xc9fb00) to 1 at 0xca0b10
> debug: r_getblock(size 112) -> 0xc9fc30
> debug: r_getblock(size 112) -> 0xc9fe30
> debug: r_getblock(size 48) -> 0xc9feb0
> debug: r_getblock(size 112) -> 0xc9fe30
> debug: mpz_init(0xc9fe30) 0xc9fd00
> debug: mpg_make_number(0xc9fe30) to 2 at 0xc9fd00
> debug: r_getblock(size 112) -> 0xc9fef0
> debug: r_getblock(size 112) -> 0xca0120
> debug: r_getblock(size 48) -> 0xca01a0
> debug: r_getblock(size 112) -> 0xca0120
> debug: r_getblock(size 48) -> 0xca01e0
> debug: r_getblock(size 112) -> 0xca0220
> debug: r_getblock(size 112) -> 0xca02a0
> debug: r_getblock(size 48) -> 0xca0320
> debug: r_getblock(size 112) -> 0xca0360
> debug: r_getblock(size 112) -> 0xca0400
> debug: r_getblock(size 48) -> 0xca0510
> debug: r_getblock(size 112) -> 0xca0550
> debug: r_getblock(size 112) -> 0xca05f0
> debug: r_getblock(size 48) -> 0xca06d0
> debug: r_getblock(size 112) -> 0xca0710
> debug: r_getblock(size 112) -> 0xca07b0
> debug: r_getblock(size 48) -> 0xca0850
> debug: r_getblock(size 112) -> 0xca0890
> debug: r_getblock(size 112) -> 0xca0930
> debug: r_getblock(size 48) -> 0xca09d0
> debug: r_getblock(size 112) -> 0xca0a10
> debug: r_getblock(size 112) -> 0xca0c60
> debug: r_getblock(size 48) -> 0xca0ad0
> debug: r_getblock(size 112) -> 0xca0ce0
> debug: r_getblock(size 112) -> 0xca0d80
> debug: r_getblock(size 48) -> 0xca0e20
> debug: r_getblock(size 112) -> 0xca0e60
> debug: r_getblock(size 112) -> 0xca0f00
> debug: r_getblock(size 48) -> 0xca0fa0
> debug: r_getblock(size 112) -> 0xca0fe0
> debug: r_getblock(size 112) -> 0xca1080
> debug: r_getblock(size 48) -> 0xca1120
> debug: r_getblock(size 112) -> 0xca1160
> debug: r_getblock(size 112) -> 0xca1200
> debug: r_getblock(size 48) -> 0xca12a0
> debug: r_getblock(size 112) -> 0xca12e0
> debug: r_getblock(size 112) -> 0xca1380
> debug: r_getblock(size 48) -> 0xca1420
> debug: r_getblock(size 112) -> 0xca1460
> debug: r_getblock(size 112) -> 0xca1500
> debug: r_getblock(size 48) -> 0xca15a0
> debug: r_getblock(size 112) -> 0xca15e0
> debug: r_getblock(size 112) -> 0xca1680
> debug: r_getblock(size 48) -> 0xca1720
> debug: r_getblock(size 112) -> 0xca1760
> debug: r_getblock(size 112) -> 0xca1800
> debug: r_getblock(size 48) -> 0xca1ac0
> debug: r_getblock(size 112) -> 0xca1b00
> debug: r_getblock(size 112) -> 0xca1ba0
> debug: r_getblock(size 48) -> 0xca1c40
> debug: r_getblock(size 112) -> 0xca1c80
> debug: r_getblock(size 112) -> 0xca1d20
> debug: r_getblock(size 48) -> 0xca1dc0
> debug: r_getblock(size 112) -> 0xca1e00
> debug: r_getblock(size 112) -> 0xca1ea0
> debug: r_getblock(size 48) -> 0xca1f40
> debug: r_getblock(size 112) -> 0xca1f80
> debug: r_getblock(size 112) -> 0xca2020
> debug: r_getblock(size 48) -> 0xca20c0
> debug: r_getblock(size 112) -> 0xca2100
> debug: r_getblock(size 112) -> 0xca21a0
> debug: r_getblock(size 48) -> 0xca2240
> debug: r_getblock(size 112) -> 0xca2280
> debug: r_getblock(size 112) -> 0xca2320
> debug: r_getblock(size 48) -> 0xca23d0
> debug: r_getblock(size 112) -> 0xca2410
> debug: r_getblock(size 112) -> 0xca24b0
> debug: r_getblock(size 48) -> 0xca2550
> debug: r_getblock(size 112) -> 0xca2590
> debug: r_getblock(size 112) -> 0xca2630
> debug: r_getblock(size 48) -> 0xca26e0
> debug: r_getblock(size 112) -> 0xca2720
> debug: r_getblock(size 112) -> 0xca27c0
> debug: r_getblock(size 48) -> 0xca2860
> debug: r_getblock(size 112) -> 0xca28a0
> debug: r_getblock(size 112) -> 0xca2940
> debug: r_getblock(size 48) -> 0xca29e0
> debug: r_getblock(size 112) -> 0xca2a20
> debug: r_getblock(size 112) -> 0xca2ac0
> debug: r_getblock(size 48) -> 0xca2b90
> debug: r_getblock(size 112) -> 0xca2bd0
> debug: r_getblock(size 112) -> 0xca2c70
> debug: r_getblock(size 48) -> 0xca2d10
> debug: r_getblock(size 112) -> 0xca2d50
> debug: r_getblock(size 112) -> 0xca2df0
> debug: r_getblock(size 48) -> 0xca2e90
> debug: r_getblock(size 112) -> 0xca2ed0
> debug: r_getblock(size 112) -> 0xca2f70
> debug: r_getblock(size 48) -> 0xca3010
> debug: r_getblock(size 112) -> 0xca3050
> debug: r_getblock(size 112) -> 0xca3100
> debug: r_getblock(size 48) -> 0xca31a0
> debug: r_getblock(size 112) -> 0xca31e0
> debug: r_getblock(size 112) -> 0xca3280
> debug: r_getblock(size 48) -> 0xca3390
> debug: r_getblock(size 112) -> 0xca33d0
> debug: r_getblock(size 112) -> 0xca3470
> debug: r_getblock(size 48) -> 0xca3510
> debug: r_getblock(size 112) -> 0xca3550
> debug: r_getblock(size 112) -> 0xca35f0
> debug: r_getblock(size 48) -> 0xca3690
> debug: r_getblock(size 112) -> 0xca36d0
> debug: r_getblock(size 112) -> 0xca3770
> debug: r_getblock(size 48) -> 0xca3810
> debug: r_getblock(size 112) -> 0xca3850
> debug: r_getblock(size 112) -> 0xca38f0
> debug: r_getblock(size 48) -> 0xca39a0
> debug: r_getblock(size 112) -> 0xca39e0
> debug: r_getblock(size 112) -> 0xca3a80
> debug: r_getblock(size 48) -> 0xca3b20
> debug: r_getblock(size 112) -> 0xca3b60
> debug: r_getblock(size 112) -> 0xca3c00
> debug: r_getblock(size 48) -> 0xca3cb0
> debug: r_getblock(size 112) -> 0xca3cf0
> debug: r_getblock(size 112) -> 0xca3d90
> debug: r_getblock(size 48) -> 0xca3ea0
> debug: r_getblock(size 112) -> 0xca3ee0
> debug: r_getblock(size 112) -> 0xca3f80
> debug: r_getblock(size 48) -> 0xca4020
> debug: r_getblock(size 112) -> 0xca4060
> debug: r_getblock(size 112) -> 0xca4100
> debug: r_getblock(size 48) -> 0xca41a0
> debug: r_getblock(size 112) -> 0xca41e0
> debug: r_getblock(size 112) -> 0xca4280
> debug: r_getblock(size 48) -> 0xca4720
> debug: r_getblock(size 112) -> 0xca4760
> debug: r_getblock(size 112) -> 0xca4800
> debug: r_getblock(size 48) -> 0xca48a0
> debug: r_getblock(size 112) -> 0xca48e0
> debug: r_getblock(size 112) -> 0xca4980
> debug: r_getblock(size 48) -> 0xca4a20
> debug: r_getblock(size 112) -> 0xca4a60
> debug: r_getblock(size 112) -> 0xca4b00
> debug: r_getblock(size 48) -> 0xca4ba0
> debug: r_getblock(size 112) -> 0xca4be0
> debug: r_getblock(size 112) -> 0xca4c80
> debug: r_getblock(size 48) -> 0xca4d20
> debug: r_getblock(size 112) -> 0xca4d60
> debug: r_getblock(size 112) -> 0xca4e00
> debug: r_getblock(size 48) -> 0xca4ea0
> debug: r_getblock(size 112) -> 0xca4ee0
> debug: r_getblock(size 112) -> 0xca4f80
> debug: r_getblock(size 48) -> 0xca5020
> debug: r_getblock(size 112) -> 0xca5060
> debug: r_getblock(size 112) -> 0xca5100
> debug: r_getblock(size 48) -> 0xca51a0
> debug: r_getblock(size 112) -> 0xca51e0
> debug: r_getblock(size 112) -> 0xca5280
> debug: r_getblock(size 48) -> 0xca5320
> debug: r_getblock(size 112) -> 0xca5360
> debug: r_getblock(size 112) -> 0xca5410
> debug: r_getblock(size 48) -> 0xca54c0
> debug: r_getblock(size 112) -> 0xca5500
> debug: r_getblock(size 112) -> 0xca55a0
> debug: r_getblock(size 48) -> 0xca5640
> debug: r_getblock(size 112) -> 0xca5680
> debug: r_getblock(size 112) -> 0xca5730
> debug: r_getblock(size 48) -> 0xca57d0
> debug: r_getblock(size 112) -> 0xca5810
> debug: r_getblock(size 112) -> 0xca58b0
> debug: r_getblock(size 48) -> 0xca5950
> debug: r_getblock(size 112) -> 0xca5990
> debug: r_getblock(size 112) -> 0xca5a30
> debug: r_getblock(size 48) -> 0xca5ad0
> debug: r_getblock(size 112) -> 0xca5b10
> debug: r_getblock(size 112) -> 0xca5bb0
> debug: r_getblock(size 48) -> 0xca5c50
> debug: r_getblock(size 112) -> 0xca5c90
> debug: r_getblock(size 112) -> 0xca5d30
> debug: r_getblock(size 48) -> 0xca5dd0
> debug: r_getblock(size 112) -> 0xca5e10
> debug: r_getblock(size 112) -> 0xca5eb0
> debug: r_getblock(size 48) -> 0xca5f50
> debug: r_getblock(size 112) -> 0xca5f90
> debug: r_getblock(size 112) -> 0xca6030
> debug: r_getblock(size 48) -> 0xca60d0
> debug: r_getblock(size 112) -> 0xca6110
> debug: r_getblock(size 112) -> 0xca61b0
> debug: r_getblock(size 48) -> 0xca6250
> debug: r_getblock(size 112) -> 0xca6290
> debug: r_getblock(size 112) -> 0xca6330
> debug: r_getblock(size 48) -> 0xca63d0
> debug: r_getblock(size 112) -> 0xca6410
> debug: r_getblock(size 112) -> 0xca64b0
> debug: r_getblock(size 48) -> 0xca6550
> debug: r_getblock(size 112) -> 0xca6590
> debug: r_getblock(size 112) -> 0xca6630
> debug: r_getblock(size 48) -> 0xca66f0
> debug: r_getblock(size 112) -> 0xca6730
> debug: r_getblock(size 112) -> 0xca67d0
> debug: r_getblock(size 48) -> 0xca6880
> debug: r_getblock(size 112) -> 0xca68c0
> debug: r_getblock(size 112) -> 0xca6960
> debug: r_getblock(size 48) -> 0xca6a00
> debug: r_getblock(size 112) -> 0xca6a40
> debug: r_getblock(size 112) -> 0xca6ae0
> debug: r_getblock(size 48) -> 0xca7250
> debug: r_getblock(size 112) -> 0xca7290
> debug: r_getblock(size 112) -> 0xca7330
> debug: r_getblock(size 48) -> 0xca73d0
> debug: r_getblock(size 112) -> 0xca7410
> debug: r_getblock(size 112) -> 0xca74b0
> debug: r_getblock(size 48) -> 0xca7550
> debug: r_getblock(size 112) -> 0xca7590
> debug: r_getblock(size 112) -> 0xca7630
> debug: r_getblock(size 48) -> 0xca76d0
> debug: r_getblock(size 112) -> 0xca7710
> debug: r_getblock(size 48) -> 0xca77b0
> debug: r_getblock(size 112) -> 0xca77f0
> debug: r_getblock(size 112) -> 0xca7890
> debug: r_getblock(size 48) -> 0xca7930
> debug: r_getblock(size 112) -> 0xca7970
> debug: r_getblock(size 112) -> 0xca7a30
> debug: r_getblock(size 112) -> 0xca7ad0
> debug: r_getblock(size 112) -> 0xca8500
> debug: r_getblock(size 112) -> 0xca8580
> debug: mpz_init(0xca8580) 0xca8600
> debug: mpg_make_number(0xca8580) to 0 at 0xca8600
> debug: r_getblock(size 112) -> 0xca8620
> debug: mpz_init(0xca8620) 0xca86a0
> debug: mpg_make_number(0xca8620) to 1 at 0xca86a0
> debug: r_getblock(size 112) -> 0xca86e0
> debug: r_getblock(size 112) -> 0xca8780
> debug: r_getblock(size 48) -> 0xca8800
> debug: r_getblock(size 112) -> 0xca8840
> debug: mpz_init(0xca8840) 0xca88c0
> debug: mpg_make_number(0xca8840) to 0 at 0xca88c0
> debug: r_getblock(size 112) -> 0xca88e0
> debug: r_getblock(size 112) -> 0xca89d0
> debug: r_getblock(size 48) -> 0xca8ac0
> debug: r_getblock(size 112) -> 0xca89d0
> debug: r_getblock(size 112) -> 0xca8b00
> debug: r_getblock(size 48) -> 0xca8b80
> debug: r_getblock(size 112) -> 0xca8bc0
> debug: mpz_init(0xca8bc0) 0xca9b10
> debug: mpg_make_number(0xca8bc0) to 1 at 0xca9b10
> debug: r_getblock(size 112) -> 0xca8c90
> debug: mpz_init(0xca8c90) 0xca8d10
> debug: r_getblock(size 112) -> 0xca8d30
> debug: r_getblock(size 112) -> 0xca8df0
> debug: r_getblock(size 112) -> 0xca8e70
> debug: r_getblock(size 112) -> 0xcaf350
> debug: r_getblock(size 112) -> 0xcaf3d0
> debug: mpz_init(0xcaf3d0) 0xcaf450
> debug: r_getblock(size 112) -> 0xcaf470
> debug: mpz_init(0xcaf470) 0xcaf4f0
> debug: r_getblock(size 112) -> 0xcaf510
> debug: r_getblock(size 112) -> 0xcaf5b0
> debug: mpz_init(0xcaf5b0) 0xcaf630
> debug: r_getblock(size 112) -> 0xcaf650
> debug: r_getblock(size 112) -> 0xcaf6f0
> debug: r_getblock(size 112) -> 0xcaf790
> debug: r_getblock(size 48) -> 0xcaf030
> debug: r_getblock(size 112) -> 0xcaf880
> debug: r_getblock(size 112) -> 0xcaf9b0
> debug: r_getblock(size 48) -> 0xcaf210
> debug: r_getblock(size 112) -> 0xcafa30
> debug: r_getblock(size 112) -> 0xcafab0
> debug: r_getblock(size 48) -> 0xcafb30
> debug: r_getblock(size 112) -> 0xcafb70
> debug: r_getblock(size 112) -> 0xcafbf0
> debug: r_getblock(size 48) -> 0xcafc70
> debug: r_getblock(size 112) -> 0xcafcb0
> debug: r_getblock(size 112) -> 0xcafd50
> debug: r_getblock(size 48) -> 0xcafdd0
> debug: r_getblock(size 112) -> 0xcafe10
> debug: r_getblock(size 112) -> 0xcafeb0
> debug: r_getblock(size 48) -> 0xcaff30
> debug: r_getblock(size 112) -> 0xcaff70
> debug: r_getblock(size 112) -> 0xcb0010
> debug: r_getblock(size 48) -> 0xcb0090
> debug: r_getblock(size 112) -> 0xcb00d0
> debug: r_getblock(size 112) -> 0xcb0170
> debug: r_getblock(size 48) -> 0xcb01f0
> debug: r_getblock(size 112) -> 0xcb0230
> debug: r_getblock(size 112) -> 0xcb02d0
> debug: r_getblock(size 48) -> 0xcb0350
> debug: r_getblock(size 112) -> 0xcb0390
> debug: r_getblock(size 112) -> 0xcb0430
> debug: r_getblock(size 48) -> 0xcb04b0
> debug: r_getblock(size 112) -> 0xcb04f0
> debug: r_getblock(size 112) -> 0xcb0590
> debug: r_getblock(size 48) -> 0xcb0610
> debug: r_getblock(size 112) -> 0xcb0650
> debug: r_getblock(size 112) -> 0xcb06f0
> debug: r_getblock(size 48) -> 0xcb0770
> debug: r_getblock(size 112) -> 0xcb07b0
> debug: r_getblock(size 112) -> 0xcb0850
> debug: r_getblock(size 48) -> 0xcb08d0
> debug: r_getblock(size 112) -> 0xcb0910
> debug: r_getblock(size 112) -> 0xcb09b0
> debug: r_getblock(size 48) -> 0xcb0a30
> debug: r_getblock(size 112) -> 0xcb0a70
> debug: r_getblock(size 112) -> 0xcb0b10
> debug: r_getblock(size 48) -> 0xcb0b90
> debug: r_getblock(size 112) -> 0xcb0bd0
> debug: r_getblock(size 112) -> 0xcb0c70
> debug: r_getblock(size 48) -> 0xcb0cf0
> debug: r_getblock(size 112) -> 0xcb0d30
> debug: r_getblock(size 112) -> 0xcb0dd0
> debug: r_getblock(size 48) -> 0xcb0e50
> debug: r_getblock(size 112) -> 0xcb0e90
> debug: r_getblock(size 112) -> 0xcb0f30
> debug: r_getblock(size 48) -> 0xcb0fb0
> debug: r_getblock(size 112) -> 0xcb0ff0
> debug: r_getblock(size 112) -> 0xcb1090
> debug: r_getblock(size 48) -> 0xcb1110
> debug: r_getblock(size 112) -> 0xcb1150
> debug: r_getblock(size 112) -> 0xcb11f0
> debug: r_getblock(size 48) -> 0xcb1270
> debug: r_getblock(size 112) -> 0xcb12b0
> debug: r_getblock(size 112) -> 0xcb1350
> debug: r_getblock(size 48) -> 0xcb13d0
> debug: r_getblock(size 112) -> 0xcb1410
> debug: r_getblock(size 112) -> 0xcb14b0
> debug: r_getblock(size 48) -> 0xcb1530
> debug: r_getblock(size 112) -> 0xcb1570
> debug: r_getblock(size 112) -> 0xcb1610
> debug: r_getblock(size 48) -> 0xcb1690
> debug: r_getblock(size 112) -> 0xcb16d0
> debug: r_getblock(size 112) -> 0xcb1770
> debug: r_getblock(size 48) -> 0xcb17f0
> debug: r_getblock(size 112) -> 0xcb1830
> debug: r_getblock(size 112) -> 0xcb18d0
> debug: r_getblock(size 48) -> 0xcb1950
> debug: r_getblock(size 112) -> 0xcb1990
> debug: r_getblock(size 112) -> 0xcb1a30
> debug: r_getblock(size 48) -> 0xcb1ab0
> debug: r_getblock(size 112) -> 0xcb1af0
> debug: r_getblock(size 112) -> 0xcb1b90
> debug: r_getblock(size 48) -> 0xcb1c10
> debug: r_getblock(size 112) -> 0xcb1c50
> debug: r_getblock(size 112) -> 0xcb1cf0
> debug: r_getblock(size 48) -> 0xcb1d70
> debug: r_getblock(size 112) -> 0xcb1db0
> debug: r_getblock(size 112) -> 0xcb1e50
> debug: r_getblock(size 48) -> 0xcb1ed0
> debug: r_getblock(size 112) -> 0xcb1f10
> debug: r_getblock(size 112) -> 0xcb1fb0
> debug: r_getblock(size 48) -> 0xcb2030
> debug: r_getblock(size 112) -> 0xcb2070
> debug: r_getblock(size 112) -> 0xcb2110
> debug: r_getblock(size 48) -> 0xcb2190
> debug: r_getblock(size 112) -> 0xcb21d0
> debug: r_getblock(size 112) -> 0xcb2270
> debug: r_getblock(size 48) -> 0xcb22f0
> debug: r_getblock(size 112) -> 0xcb2330
> debug: r_getblock(size 112) -> 0xcb23d0
> debug: r_getblock(size 48) -> 0xcb2450
> debug: r_getblock(size 112) -> 0xcb2490
> debug: r_getblock(size 112) -> 0xcb2530
> debug: r_getblock(size 48) -> 0xcb25b0
> debug: r_getblock(size 112) -> 0xcb25f0
> debug: r_getblock(size 112) -> 0xcb2690
> debug: r_getblock(size 48) -> 0xcb2710
> debug: r_getblock(size 112) -> 0xcb2750
> debug: r_getblock(size 112) -> 0xcb27f0
> debug: r_getblock(size 48) -> 0xcb2870
> debug: r_getblock(size 112) -> 0xcb28b0
> debug: r_getblock(size 112) -> 0xcb2950
> debug: r_getblock(size 48) -> 0xcb29d0
> debug: r_getblock(size 112) -> 0xcb2a10
> debug: r_getblock(size 112) -> 0xcb2ab0
> debug: r_getblock(size 48) -> 0xcb2b30
> debug: r_getblock(size 112) -> 0xcb2b70
> debug: r_getblock(size 112) -> 0xcb2c10
> debug: r_getblock(size 48) -> 0xcb3090
> debug: r_getblock(size 112) -> 0xcb30d0
> debug: r_getblock(size 112) -> 0xcb3170
> debug: r_getblock(size 48) -> 0xcb31f0
> debug: r_getblock(size 112) -> 0xcb3230
> debug: r_getblock(size 112) -> 0xcb32d0
> debug: r_getblock(size 48) -> 0xcb3350
> debug: r_getblock(size 112) -> 0xcb3390
> debug: r_getblock(size 48) -> 0xcb3430
> debug: r_getblock(size 112) -> 0xcb3470
> debug: r_getblock(size 112) -> 0xcb3510
> debug: r_getblock(size 112) -> 0xcb35b0
> debug: r_getblock(size 112) -> 0xcb3650
> debug: r_getblock(size 112) -> 0xcb36f0
> debug: r_getblock(size 112) -> 0xcb3790
> debug: r_getblock(size 112) -> 0xcb3830
> debug: r_getblock(size 112) -> 0xcb3b70
> debug: r_getblock(size 48) -> 0xcb3c80
> debug: r_getblock(size 112) -> 0xcb3cc0
> debug: r_getblock(size 48) -> 0xcb3d60
> debug: r_getblock(size 112) -> 0xcb3da0
> debug: r_getblock(size 48) -> 0xcb3e40
> debug: r_getblock(size 112) -> 0xcb3e80
> debug: r_getblock(size 48) -> 0xcb3f20
> debug: r_getblock(size 112) -> 0xcb3f60
> debug: r_getblock(size 48) -> 0xcb4000
> debug: r_getblock(size 112) -> 0xcb4040
> debug: r_getblock(size 48) -> 0xcb40e0
> debug: r_getblock(size 112) -> 0xcb4120
> debug: r_getblock(size 48) -> 0xcb41c0
> debug: r_getblock(size 112) -> 0xcb4200
> debug: r_getblock(size 48) -> 0xcb42a0
> debug: r_getblock(size 112) -> 0xcb42e0
> debug: r_getblock(size 48) -> 0xcb4380
> debug: r_getblock(size 112) -> 0xcb43c0
> debug: r_getblock(size 48) -> 0xcb4460
> debug: r_getblock(size 112) -> 0xcb44a0
> debug: r_getblock(size 48) -> 0xcb4540
> debug: r_getblock(size 112) -> 0xcb4580
> debug: r_getblock(size 48) -> 0xcb4620
> debug: r_getblock(size 112) -> 0xcb4660
> debug: r_getblock(size 48) -> 0xcb4700
> debug: r_getblock(size 112) -> 0xcb4740
> debug: r_getblock(size 48) -> 0xcb47e0
> debug: r_getblock(size 112) -> 0xcb4820
> debug: r_getblock(size 48) -> 0xcb48c0
> debug: r_getblock(size 112) -> 0xcb4900
> debug: r_getblock(size 48) -> 0xcb49a0
> debug: r_getblock(size 112) -> 0xcb49e0
> debug: r_getblock(size 48) -> 0xcb4a80
> debug: r_getblock(size 112) -> 0xcb4ac0
> debug: r_getblock(size 48) -> 0xcb4b60
> debug: r_getblock(size 112) -> 0xcb4ba0
> debug: r_getblock(size 48) -> 0xcb4c40
> debug: r_getblock(size 112) -> 0xcb4c80
> debug: r_getblock(size 48) -> 0xcb4d20
> debug: r_getblock(size 112) -> 0xcb4d60
> debug: r_getblock(size 48) -> 0xcb4e00
> debug: r_getblock(size 112) -> 0xcb4e40
> debug: r_getblock(size 48) -> 0xcb4ee0
> debug: r_getblock(size 112) -> 0xcb4f20
> debug: r_getblock(size 48) -> 0xcb4fc0
> debug: r_getblock(size 112) -> 0xcb5000
> debug: r_getblock(size 48) -> 0xcb50a0
> debug: r_getblock(size 112) -> 0xcb50e0
> debug: r_getblock(size 48) -> 0xcb5180
> debug: r_getblock(size 112) -> 0xcb51c0
> debug: r_getblock(size 48) -> 0xcb5260
> debug: r_getblock(size 112) -> 0xcb52a0
> debug: r_getblock(size 48) -> 0xcb5340
> debug: r_getblock(size 112) -> 0xcb5380
> debug: r_getblock(size 48) -> 0xcb5420
> debug: r_getblock(size 112) -> 0xcb5460
> debug: r_getblock(size 48) -> 0xcb5500
> debug: r_getblock(size 112) -> 0xcb5540
> debug: r_getblock(size 48) -> 0xcb55e0
> debug: r_getblock(size 112) -> 0xcb5620
> debug: r_getblock(size 48) -> 0xcb56c0
> debug: r_getblock(size 112) -> 0xcb5700
> debug: r_getblock(size 48) -> 0xcb57a0
> debug: r_getblock(size 112) -> 0xcb57e0
> debug: r_getblock(size 48) -> 0xcb5880
> debug: r_getblock(size 112) -> 0xcb58c0
> debug: r_getblock(size 48) -> 0xcb5960
> debug: r_getblock(size 112) -> 0xcb59a0
> debug: r_getblock(size 48) -> 0xcb5a40
> debug: r_getblock(size 112) -> 0xcb5a80
> debug: r_getblock(size 48) -> 0xcb5b20
> debug: r_getblock(size 112) -> 0xcb5b60
> debug: r_getblock(size 48) -> 0xcb5c00
> debug: r_getblock(size 112) -> 0xcb5c40
> debug: r_getblock(size 48) -> 0xcb5ce0
> debug: r_getblock(size 112) -> 0xcb5d20
> debug: r_getblock(size 48) -> 0xcb61c0
> debug: r_getblock(size 112) -> 0xcb6200
> debug: r_getblock(size 48) -> 0xcb62a0
> debug: r_getblock(size 112) -> 0xcb62e0
> debug: r_getblock(size 48) -> 0xcb6380
> debug: r_getblock(size 112) -> 0xcb6590
> debug: r_getblock(size 48) -> 0xcb6630
> debug: r_getblock(size 112) -> 0xcb6670
> debug: r_getblock(size 48) -> 0xcb6710
> debug: r_getblock(size 112) -> 0xcb6750
> debug: r_getblock(size 48) -> 0xcb67f0
> debug: r_getblock(size 112) -> 0xcb6830
> debug: r_getblock(size 48) -> 0xcb68d0
> debug: r_getblock(size 112) -> 0xcb6910
> debug: r_getblock(size 48) -> 0xcb69b0
> debug: r_getblock(size 112) -> 0xcb69f0
> debug: r_getblock(size 48) -> 0xcb6a90
> debug: r_getblock(size 112) -> 0xcb6ad0
> debug: r_getblock(size 48) -> 0xcb6b70
> debug: r_getblock(size 112) -> 0xcb6bb0
> debug: r_getblock(size 48) -> 0xcb6c50
> debug: r_getblock(size 112) -> 0xcb6c90
> debug: r_getblock(size 48) -> 0xcb6d30
> debug: r_getblock(size 112) -> 0xcb6d70
> debug: r_getblock(size 48) -> 0xcb6e10
> debug: r_getblock(size 112) -> 0xcb6e50
> debug: r_getblock(size 48) -> 0xcb6ef0
> debug: r_getblock(size 112) -> 0xcb6f30
> debug: r_getblock(size 48) -> 0xcb6fd0
> debug: r_getblock(size 112) -> 0xcb7010
> debug: r_getblock(size 48) -> 0xcb70b0
> debug: r_getblock(size 112) -> 0xcb70f0
> debug: r_getblock(size 48) -> 0xcb7190
> debug: r_getblock(size 112) -> 0xcb71d0
> debug: r_getblock(size 48) -> 0xcb7270
> debug: r_getblock(size 112) -> 0xcb72b0
> debug: r_getblock(size 48) -> 0xcb7350
> debug: r_getblock(size 112) -> 0xcb7390
> debug: r_getblock(size 48) -> 0xcb7430
> debug: r_getblock(size 112) -> 0xcb7470
> debug: r_getblock(size 48) -> 0xcb7510
> debug: r_getblock(size 112) -> 0xcb7550
> debug: r_getblock(size 48) -> 0xcb75f0
> debug: r_getblock(size 112) -> 0xcb7630
> debug: r_getblock(size 48) -> 0xcb76d0
> debug: r_getblock(size 112) -> 0xcb7710
> debug: r_getblock(size 48) -> 0xcb77b0
> debug: r_getblock(size 112) -> 0xcb77f0
> debug: r_getblock(size 48) -> 0xcb7890
> debug: r_getblock(size 112) -> 0xcb78d0
> debug: r_getblock(size 48) -> 0xcb7970
> debug: r_getblock(size 112) -> 0xcb79b0
> debug: r_getblock(size 48) -> 0xcb7a50
> debug: r_getblock(size 112) -> 0xcb7a90
> debug: r_getblock(size 48) -> 0xcb7b30
> debug: r_getblock(size 112) -> 0xcb7b70
> debug: r_getblock(size 48) -> 0xcb7c10
> debug: r_getblock(size 112) -> 0xcb7c50
> debug: r_getblock(size 48) -> 0xcb7cf0
> debug: r_getblock(size 112) -> 0xcb7d30
> debug: r_getblock(size 48) -> 0xcb7dd0
> debug: r_getblock(size 112) -> 0xcb7e40
> debug: r_getblock(size 48) -> 0xcb7ee0
> debug: r_getblock(size 112) -> 0xcb7f20
> debug: r_getblock(size 48) -> 0xcb7fc0
> debug: r_unref(0xcb3510)
> debug: r_unref(0xcb35b0)
> debug: r_unref(0xcb36f0)
> debug: r_unref(0xca7a30)
> debug: r_getblock(size 112) -> 0xca7a30
> debug: r_unref(0xca7a30)
> debug: r_getblock(size 112) -> 0xca7a30
> debug: r_getblock(size 112) -> 0xcb36f0
> debug: mpz_init(0xcb36f0) 0xcb3590
> debug: mpg_make_number(0xcb36f0) to 1 at 0xcb3590
> debug: r_unref(0xcb36f0)
> debug: mpz_clear(0xcb36f0): 0xcb36f0  _mp_alloc 1 _mp_size 1 mp_d 0xcb3590
> debug: r_getblock(size 112) -> 0xcb36f0
> debug: mpgz_zero(0xcb36f0) 0xcb3590
> debug: r_getblock(size 112) -> 0xcb35b0
> debug: r_getblock(size 112) -> 0xcb3510
> debug: r_unref(0xcb36f0)
> debug: mpz_clear(0xcb36f0): 0xcb36f0  _mp_alloc 1 _mp_size 0 mp_d 0xcb3590
> debug: r_unref(0xca7a30)
> debug: r_getblock(size 112) -> 0xca7a30
> debug: r_unref(0xcb3510)
> debug: mpz_clear(0xcb3510): 0xcb3510  _mp_alloc 1 _mp_size 0 mp_d 0xcb3590
> free(): double free detected in tcache 2
> Abort (core dumped)
> 
> As you can see, mpz_clear is getting called twice with mp_d 
> set to 0xcb3590. That looks fishy to me.
> 
> Regards,
> Andy

> diff --git a/mpfr.c b/mpfr.c
> index e1712863..231e6e85 100644
> --- a/mpfr.c
> +++ b/mpfr.c
> @@ -113,9 +113,11 @@ mpg_node(unsigned int flags)
>       if (flags == MPFN)
>               /* Initialize, set precision to the default precision, and 
> value to NaN */
>               mpfr_init(r->mpg_numbr);
> -     else
> +     else {
>               /* Initialize and set value to 0 */
>               mpz_init(r->mpg_i);
> +             printf("debug: mpz_init(%p) %p\n", r, r->mpg_i->_mp_d);
> +     }
>       return r;
>  }
>  
> @@ -138,6 +140,7 @@ mpg_make_number(double x)
>       } else {
>               r = mpg_integer();
>               mpz_set_d(r->mpg_i, ival);
> +             printf("debug: mpg_make_number(%p) to %g at %p\n", r, x, 
> r->mpg_i->_mp_d);
>       }
>       return r;
>  }
> @@ -257,8 +260,11 @@ mpg_zero(NODE *n)
>       if (! is_mpg_integer(n)) {
>               mpz_init(n->mpg_i);     /* this also sets its value to 0 */
>               n->flags |= MPZN;
> -     } else
> +             printf("debug: mpgz_zero(%p) %p\n", n, n->mpg_i->_mp_d);
> +     } else {
>               mpz_set_si(n->mpg_i, 0);
> +             printf("debug: zeroing(%p) %p\n", n, n->mpg_i->_mp_d);
> +     }
>  }
>  
>  
> @@ -1775,8 +1781,10 @@ mpfr_unset(NODE *n)
>  {
>       if (is_mpg_float(n))
>               mpfr_clear(n->mpg_numbr);
> -     else if (is_mpg_integer(n))
> +     else if (is_mpg_integer(n)) {
> +             printf("debug: mpz_clear(%p): %p  _mp_alloc %d _mp_size %d mp_d 
> %p\n", n, n->mpg_i, n->mpg_i->_mp_alloc, n->mpg_i->_mp_size, n->mpg_i->_mp_d);
>               mpz_clear(n->mpg_i);
> +     }
>  }
>  
>  #else
> diff --git a/node.c b/node.c
> index bcb9a4a5..f28299d6 100644
> --- a/node.c
> +++ b/node.c
> @@ -496,6 +496,7 @@ make_typed_regex(const char *re, size_t len)
>  void
>  r_unref(NODE *tmp)
>  {
> +     printf("debug: r_unref(%p)\n", tmp);
>  #ifdef GAWKDEBUG
>       /* Do the same as in awk.h:unref().  */
>       assert(tmp == NULL || tmp->valref > 0);
> @@ -1039,6 +1040,7 @@ r_getblock(int id)
>       nextfree[id].active++;
>       if (nextfree[id].highwater < nextfree[id].active)
>               nextfree[id].highwater = nextfree[id].active;
> +     printf("debug: r_getblock(size %zu) -> %p\n", nextfree[id].size, res);
>       return res;
>  }
>  


-- 
Andrew Schorr                      e-mail: aschorr@telemetry-investments.com
Telemetry Investments, L.L.C.      phone:  917-305-1748
152 W 36th St, #402                fax:    212-425-5550
New York, NY 10018-8765



reply via email to

[Prev in Thread] Current Thread [Next in Thread]