more gc reasons
@@ -1119,6 +1119,8 @@ static int tracked_max = 0;
static uchar *hl_gc_reason( void *ptr ) {
gc_pheader *page = GC_GET_PAGE(ptr);
int bid;
+ if( !hl_is_ptr(&hlt_dyn) ) return USTR("BrokenDyn");
+ if( cur_mark_stack != mark_stack_end - mark_stack_size + 2 ) return USTR("MarkStack");
if( !page ) return USTR("NoPage");
if( ((unsigned char*)ptr - (unsigned char*)page) % page->block_size != 0 ) return USTR("Unaligned");
bid = (int)((unsigned char*)ptr - (unsigned char*)page) / page->block_size;
