Thanks, Jonas! Just before I posted the other day, I had discovered a buffer overrun via range checking. I took care of it before writing my previous message. Maybe there is another buffer overflow that the range checker is somehow missing?
There IS a local dynamic array to be finalized, so this seems likely. However, range checking is not catching it, so I am stumped. Thanks! ~David. On Sun 6 Sep 2009, Jonas Maebe wrote: > > On 06 Sep 2009, at 10:16, David Emerson wrote: > > > My program is crashing, and I just can't figure out why. Heaptrc has > > given me this rather cryptic info: > > > > Marked memory at $B79BA208 invalid > > Wrong signature $000020D8 instead of 8E1C71B6 > > It means that you probably have a buffer overrun somewhere. > > > Using lazurus's step-into functionality, I've it down to the line > > where > > it's crashing -- seems to be crashing upon completion of a function. > > At the end of a function, all local variables are finalised. It's > probably finalising a local dynamic array (possibly the one you > mention below). > > > Alternately, I can get it to make a similar crash on setlength of a > > dynamic array to length 0. (The array has refcount 1.) > > > > I haven't been able to reduce my code to anything reasonable; > > whenever I > > cut out seemingly irrelevant/unrelated sections, the crashing stops. > > Have you tried compiling with range checking on? (-Cr) > > > Jonas > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal