From: Andrew Walrond Date: 2004-09-17T20:34:28+09:00 Subject: Re: Valgrind analysis of [BUG] unknown node type 0 On Friday 17 Sep 2004 12:01, ts wrote: > > '.local i' : the address will be allocated in bss section, and it will > zeroed at run-time. > Ok; I concur. Infact running the 'fixed' code through Valgrind does not remove the errors. The function causing valgrind to shout ==28001== Conditional jump or move depends on uninitialised value(s) ==28001== at 0x806FF18: is_pointer_to_heap (gc.c:591) ==28001== by 0x806FEE1: mark_locations_array (gc.c:609) ==28001== by 0x80710F8: rb_gc (gc.c:1328) ==28001== by 0x806FBAC: rb_newobj (gc.c:376) is static inline int is_pointer_to_heap(ptr) void *ptr; { register RVALUE *p = RANY(ptr); register RVALUE *heap_org; register long i; if (p < lomem || p > himem) return Qfalse; /* check if p looks like a pointer */ for (i=0; i < heaps_used; i++) { heap_org = heaps[i].slot; if (heap_org <= p && p < heap_org + heaps[i].limit && ((((char*)p)-((char*)heap_org))%sizeof(RVALUE)) == 0) return Qtrue; } return Qfalse; } So if lomem and himem are not the culprits, then it must be 'p' I'll try following this back up the stack with gdb, to see where it leads... Andrew