[fpc-devel] issue in heaptrc?
Martin
lazarus at mfriebe.de
Thu Jan 26 06:37:03 CET 2012
I ve been playing around with -gc and I found something suspect in heaptrc
procedure CheckPointer(p : pointer); [public, alias : 'FPC_CHECKPOINTER'];
"p" is a pointer, that should be somewhere *inside* an allocated block
of mem
pp:=loc_info^.heap_mem_root;
while pp<>nil do
begin
{ inside this block ! }
if
(ptruint(p)>=ptruint(pp)+sizeof(theap_mem_info)+ptruint(extra_info_size)) and
(ptruint(p)<=ptruint(pp)+sizeof(theap_mem_info)+ptruint(extra_info_size)+ptruint(pp^.size))
then
if this loop does not find anything then
writeln(ptext^,'pointer $',hexstr(p),' does not point to valid memory
block');
dump_error(p,ptext^);
runerror(204);
but
procedure dump_error(p : pheap_mem_info;var ptext : text);
expects a pheap_mem_info, p is not a pheap_mem_info
and that is where it crashes (shortly before dump stack trace :( )
Did I miss something or is there a bug?
More information about the fpc-devel
mailing list