Search code examples
delphidelphi-xe3fastmm

Extra "$qqrv" appearing in symbols


Delphi XE3. I'm using the JCL Error dialog and FastMM with FullDebug turned on in my application and getting "garbage" appended to the symbols in the stack traces (both JCL and FastMM):

    [74EA3D67] RaiseException
    [0041815D] FastMM4.TFreedObject.VirtualMethodError$qqrv
    [0054FEC5] Vcl.Controls.TWinControl.CMInvalidate$qqrr24Winapi.Messages.TMessage

when what I'd like is:

    [74EA3D67] RaiseException
    [0041815D] FastMM4.TFreedObject.VirtualMethodError
    [0054FEC5] Vcl.Controls.TWinControl.CMInvalidate
    [00548735] Vcl.Controls.TControl.WndProc

But only when the app is compiled for Release. When I compile for Debug the stack trace is "clean". Since I'm seeing the same sort of "garbage" in FastMM and JCL reports I don't think it's either library giving trouble.

And I'm saying "garbage" with quotes because the $qqv seems to be constant and the rest of the string varies from run to run.

I have checked (and rechecked) the map file and symbols settings and the JCL symbols and I can't see anything different in the settings.

EDIT: Not surprisingly the underlying cause is the same, as FastMM is (I think) using JCLDebug to generate the stack traces ... so fix one, fix all.


Solution

  • This is a bug in the .map file parser of the JCL.

    see http://sourceforge.net/p/fastmm/discussion/443400/thread/82b024dc/

    for the detailed thread and suggested fix.