On Friday 03 August 2007 05:15:33 Bram Geron wrote:
> At Parrot exit, we force-destroy all PObjs. It can happen that a context
> is destroyed after its sub is destroyed. Usually that's not a problem,
> but if you run with -D80 (show when contexts are destroyed, and print
> out the name of the sub) we may segfault, because the Parrot_sub
> structure is already freed.
That's definitely a problem, but I hate to disable tracing. This patch is
slightly less invasive; does it solve the problem anyway?
-- c
=== src/gc/register.c
==================================================================
--- src/gc/register.c (revision 5201)
+++ src/gc/register.c (local)
@@ -498,7 +498,7 @@
fprintf(stderr, "[free ctx %p of sub '%s']\n",
(void *)ctxp,
- (doomed->name == (void*)0xdeadbeef
+ (doomed && doomed->name == (void*)0xdeadbeef
? "???"
: (char*)doomed->name->strstart));
}