Subj : gc_root_marker assert - meaning ? To : netscape.public.mozilla.jseng From : nick.longinow@brio.com (Nick Longinow) Date : Fri Feb 07 2003 09:08 am Hi I'm seeing the code below asserting in a multithreaded application. It never occurred in my single-threaded mode. Any idea what to check for first ? The notes in the 1.5 codeline say its due to an object not being properly unrooted. gc_root_marker(JSHashEntry *he, intN i, void *arg) { void **rp = (void **)he->key; if (*rp) { #ifdef DEBUG JSArena *a; JSRuntime *rt = (JSRuntime *)arg; JSBool root_points_to_gcArenaPool = JS_FALSE; if (rp && *rp) { for (a = rt->gcArenaPool.first.next; a; a = a->next) { if (*rp >= (void *)a->base && *rp <= (void *)a->avail) { root_points_to_gcArenaPool = JS_TRUE; break; } } JS_ASSERT(root_points_to_gcArenaPool); // THIS IS ASSERTING } #endif GC_MARK(arg, *rp, he->value ? he->value : "root", NULL); } return HT_ENUMERATE_NEXT; } .