Jump to content
Roger Cigol

Compile and Running : Verbosity setting has no effect

Recommended Posts

 I changed one line of code and suddenly one of my important (ie live development for customer) projects won't link: giving "out of memory". It's a clang64 windows VCL building on 11.2.  I normally have to fiddle with the heap settings when this happens. But this time the "Tools | Options | Compiling and Running | Verbosity -> set to "diagnostic" doesn't seem to give me any different output from the normal (just "out of memory") so I can't see which heap values are causing the problem. Is this a known regression? It seems as if this Verbosity setting doesn't have any effect on the output given by the linker. I have tried with and without TwineCompile enabled. 

I am still on 11.2 (patch 1). There seems little to gain by changing to 11.3 for us C++ users. Unless someone can tell me that this "Verbosity" setting does work on 11.3.......

Edited by Roger Cigol

Share this post


Link to post

Hi Roger,

you have to set the Verbosity option to Diagnostic and you have to turn Twine Compile off. Now when the linker fails you have to switch in the messages area to the Output page. There you can see which heap is running out of memory.

It's described here:

https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Handling_Linker_Out_of_Memory_Errors

 

Twine Compile does not seem to intercept these output messages.

 

HTH, Hans

Share this post


Link to post

Hi Hans, Sorry about wrong word in my original question: I have edited this to read "diagnostic". Sometimes I have seen TwincCompile catch these messages, but sometimes not. For testing, once you have all the files compiled (takes 10 mins with twine compile) I turn Twine Compile off, Set verbosity to diagnostic and do a "make" again. This checks all object code is still ok (it is) and then jumps straight to doing the linking. The output I get is as follows (edited to save space and maintain customer confidentiality):

Done building target "_CheckLinkDependencies" in project "MYPROJECTNAME.cbproj".
Target "_PerformLink" in file "d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets":
  Task "CallTarget"
    Target "_PerformBCCILink" in file "d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets":
      Using "ILINK32" task from assembly "d:\program files (x86)\embarcadero\studio\22.0\bin\Borland.Build.Tasks.Cpp.dll".
      Task "ILINK32"
        d:\program files (x86)\embarcadero\studio\22.0\bin\ilink64.exe -G8 -L.\Win64\Release;"BIG LONG LIST OF OBJECT CODE FILES HERE", .\Win64\Release\MYPROJECTNAME_resources.res .\Win64\Release\MYPROJECTNAME.res 
        Turbo Incremental Link64 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
        d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets(3984,5): warning : Warning: Out of memory
        d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets(3984,5): error MSB6006: "ilink32" exited with code 2.
      Done executing task "ILINK32" -- FAILED.
    Done building target "_PerformBCCILink" in project "MYPROJECTNAME.cbproj" -- FAILED.
  Done executing task "CallTarget" -- FAILED.
Done building target "_PerformLink" in project "MYPROJECTNAME.cbproj" -- FAILED.
Done building project "MYPROJECTNAME.cbproj" -- FAILED.
Build FAILED.
d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets(3984,5): warning : Warning: Out of memory
d:\program files (x86)\embarcadero\studio\22.0\Bin\CodeGear.Cpp.Targets(3984,5): error MSB6006: "ilink32" exited with code 2.
    1 Warning(s)
    1 Error(s)

As you see: I do NOT get any indication of which heap size has caused the memory overflow.

If I repeat the make with Vertosity set to "Normal" I do get slightly less information in the output - so the setting is having some effect.

But no sign of any heap information.....

Share this post


Link to post

Hi Roger,

thanks for the clarification. Then it seems I'm as lost as you are.

 

You could try to run the make from the RAD Studio command prompt:

msbuild /t:Make /p:"Config=Release" /p:"platform=Win64" /v:diag "MYPROJECTNAME.cbproj"

Please note that you will have to define user environment variables manually in the command prompt, if they are set in the IDE (Tools | Options | Environment Variables) only.

 

I guess you will have to open an Embarcadero support case.

 

Regards, Hans

Share this post


Link to post

I am puzzled / worried. I've just checked out (of Git) the previous version sent to the customer as a compiled and working *.exe file and this now won't link - giving the same out of memory error. What can change that causes the linker to work with the source code at some point and then later not work ? where should I be looking to solve this problem ?

Share this post


Link to post

Well this is strange (and still puzzling and worrying). I was working on a different project yesterday and earlier today (a 32 bit VCL C++ clang project). And I've just gone back to this "problem" project and now it links ok. What can be going on here?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×