"Stephen R. van den Berg" srb@cuci.nl wrote:
And about 30 minutes later we get core4 (this one is odd and interesting, since it has a rather short Pike backtrace):
It isn't different from the others in a significant way, because only the part from do_gc and up matters.
Thank you, they all look the same to me. You don't have to post more.
The dumps all show that the object is in the mark queue afterall. That's both interesting and confusing, because now there are debug checks that don't allow objects without refs to enter it, and checks that catch if an object run out of refs later in the gc. Yet they have no refs when they are taken out of the queue. So either they enter the mark queue in a really strange way, or they run out of refs in a really strange way, or the gc is temporarily disabled.
#6 0x08112791 in debug_gc_fatal_2 (a=0x92985d0, type=3, flags=1, fmt=0x82efc13 "Marked a thing without refs.\n") at /data/src/gpike/src/gc.c:1041 #7 0x081128e9 in real_gc_mark (a=0x92985d0, type=3) at /data/src/gpike/src/gc.c:2519 #8 0x081687ec in gc_mark_object_as_referenced (o=0x92985d0) at /data/src/gpike/src/object.c:2035 #9 0x081c93a3 in run_queue (q=0x837893c) at /data/src/gpike/src/queue.c:48 #10 0x0811468c in do_gc (ignored=0x89f7448, explicit_call=0) at /data/src/gpike/src/gc.c:3545
Could you also in, say, this last coredump check the contents of the object struct? Something like this:
(gdb) fr 8 (gdb) p *o
Thanks.