[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: 5.1w1 aborts
- From: Mike Pall <mikelu-0409@...>
- Date: Fri, 10 Sep 2004 19:09:48 +0200
Hi,
Adam D. Moss wrote:
> (gdb) print *L->top
> $2 = {tt = 5, value = {gc = 0x82bd658, p = 0x82bd658, n =
> -1.9962463683308638, b = 137090648}}
> (gdb) print *mt
> $3 = {next = 0x82b1858, tt = 5 '\005', marked = 1 '\001', flags = 2 '\002',
> lsizenode = 1 '\001', metatable = 0x0,
> array = 0x0, node = 0x82af8f0, firstfree = 0x82af8f0, gclist = 0x82b9ca8,
> sizearray = 0}
This one implies that the test in checkliveness() failed since isdead()
was true. I.e. mt->marked has WHITE0BIT set, but g->currentwhite has
WHITE1BIT set.
After staring a while at lgc.c I think something is either wrong with
luaC_barrierf() or luaC_barrierback() or the use of these via the
luaC_*barrier* macros from lgc.h. This is just a wild guess from me.
Someone with a deeper knowledge about the inner workings of the garbage
collector needs to take a look at this.
Bye,
Mike