From: Tom H. <to...@co...> - 2007-12-07 15:01:29
|
On Dec 7, 2007 2:06 PM, Tom Hughes <to...@co...> wrote: > On Dec 7, 2007 12:53 AM, Julian Seward <js...@ac...> wrote: > > > That means, either: > > > > 1. no entry was ever made for "a" > > (really, for VG_ROUNDDN(a, BYTES_PER_SEC_VBIT_NODE)), or > > > > 2. there was an entry, but it has since been deleted, or > > > > 3. some other snafu. > > > > Let's chase (1) first: in set_sec_vbits8 I'd add > > VG_(printf)("setting line %p\n", aAligned) > > let it run, presumably accumulating a large log file. When it borks, > > have a look in the log file, to see if the aAligned causing the assertion in > > get_sec_vbits8 was actually entered in the first place. Yell if that > > don't make sense. > > Done that, and it looks like it is being created - first we get this: > > --31740-- setting line 0x75D0EA0 > > and then a bit later this: > > Memcheck: mc_main.c:959 (get_sec_vbits8): Assertion 'n' failed. > Memcheck: get_sec_vbits8: no node for address 0x75D0EA0 (0x75D0EAC) > > ==31740== at 0x3801444D: report_and_quit (m_libcassert.c:140) > > > Hmm, on rereading previous messages, all of (2) is irrelevant if > > you disabled gcSecVBitTable and the problem still exists. So > > it's either 1. or 3. Can you at least try 1. ? > > The GC is disabled, so it shouldn't be that.. > > It's getting odder and odder really. It seems that the problem is that the AVL tree is getting out of order. I made get_sec_vbits8 walk the oset when it detects the problem and dump the addresses to the log and this is what I get: 0x28D448D0 0x28D44950 ... 0x28E81BF0 0x28E8C910 0x7F22ECE0 0x7F22ED30 ... 0x7F22F930 0x7F22F960 0xFEDD6D30 0xFEDD6D70 0x75D0EA0 At that point it stopped as it noticed the address going backwards. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |