Yes the exception has disappeared. But the error is still there.
Heaptrace simply increases the chance of catching the error. Without it you will have random other crashes.
Wrong signature $AAAAAAAA instead of 02202B3D
Most likely means that you accessed (written to ) memory that you already freed before.
Such memory will eventually be used for other objects, and then writing random data into it, will mean disaster.
This can be caused by missing thread synchronization. but it can also be happen without threads.
And unfortunately, it is one of the hardest to debug issues that there are....
---------
Also you are right (AFAIK, only 95% sure..)
The error could be (and probably is) on an other line.
I am *guessing* this code may want to allocate memory (for the strings).
That triggers the check of the signature.
And it fails, because at some time before, something wrote to that memory.
IIRC it is possible to modify heaptrc so you can call the check by hand. (But I do not recall how, and it needs to recompile the RTL too)
If so, checks can be placed at strategic points, and narrow down the real location ...
You can also try to analyse the memories content (but a watch with memory dump). But B3DD0060 is only the start of the memory block. It could be very big, and out of all of it, it may be a single byte, somewhere....
Does the error contain added info, where the memory was previously used (allocated) ?