[ILINK32 Error] Fatal: Exceeded memory limit for block OBJ symbols in modul

Hi all,

I get the above error when linking my program with a large dll containing the vcl and a number of third-party components. I'm using CB2009 with ILINK32 version 5.96. Can I somehow control the various limts the linker uses? I saw on the net that TLINK32 had some cfg/ini file that made this possible but I haven't been able to do the same with the linker in CB2009. When I set "Build with runtime packages" everything works but I would like to avoid using this setting since I have to distribute/install more fi
les on my users computers. Can I selectively decide which packages should be dynamically loaded and which should be statically linked into the dll or is this a "all or nothing" deal?

Thanks in advance,
Lars Brange
0
Lars
7/16/2009 8:03:25 AM
embarcadero.cppbuilder.ide 2180 articles. 1 followers. Follow

9 Replies
939 Views

Similar Articles

[PageSpeed] 11

Hello,

the C++Builder 6 docs suggest that the linker simply runs out of memory:

> Exceeded memory limit for block address in module module
> 
> The linker has run out of memory.
>
> Solutions

> You can try reducing size of active RAM disks and/or disk caches.
> Close one or more applications to free memory.


Lars Brange wrote:

> Can I selectively decide which packages should be dynamically loaded
> and which should be statically linked into the dll or is this a "all
> or nothing" deal?

yes, this should be possible. If you enable runtime packages, you can
edit the list of packages in the edit box below the checkbox. However,
note that you need to explicitly include all packages that the
remaining runtime packages rely on, otherwise you may see crashes at
runtime. E.g., you can specify a runtime packages list with "rtl"
(dynamically link rtl*.bpl, statically link everything else), with
"rtl;vcl" (dynamically link rtl*.bpl and vcl*.bpl), but not "vcl" since
vcl*.bpl pulls in rtl*.bpl, and your application ends up with having
the RTL code linked in twice.

-- 
Moritz

"Hey, it compiles! Ship it!"
0
Moritz
7/17/2009 7:46:13 AM
> {quote:title=Moritz Beutel wrote:}{quote}
> Hello,
> 
> the C++Builder 6 docs suggest that the linker simply runs out of memory:
> 
> > Exceeded memory limit for block address in module module
> > 
> > The linker has run out of memory.
> >
> > Solutions
> 
> > You can try reducing size of active RAM disks and/or disk caches.
> > Close one or more applications to free memory.
> 

I doubt this since I have a 64-bit Vista machine with 6GB memory and plenty of free disk space. I get a number of warnings (36 to be precise) from the linker almost immediately such as this:

[ILINK32 Warning] Warning: OBJ symbols         : 0x000fffd0 / 0x00100000
[ILINK32 Warning] Warning: unknown heap name   : 0x08000000 / 0x08000000

I interpret this as the first value being the current value and the second number being the max value the linker can handle. The only two lines that has a value close to the max are the two lines above and the warning is about "OBJ symbols".

> 
> Lars Brange wrote:
> 
> > Can I selectively decide which packages should be dynamically loaded
> > and which should be statically linked into the dll or is this a "all
> > or nothing" deal?
> 
> yes, this should be possible. If you enable runtime packages, you can
> edit the list of packages in the edit box below the checkbox. However,
> note that you need to explicitly include all packages that the
> remaining runtime packages rely on, otherwise you may see crashes at
> runtime. E.g., you can specify a runtime packages list with "rtl"
> (dynamically link rtl*.bpl, statically link everything else), with
> "rtl;vcl" (dynamically link rtl*.bpl and vcl*.bpl), but not "vcl" since
> vcl*.bpl pulls in rtl*.bpl, and your application ends up with having
> the RTL code linked in twice.
> 

I tried this but it seems I will need most of the packages dynamically linked so I can just as well have them all. Are there any way to see what other packages a package is dependent upon?

Thanks for the help,

Lars

> -- 
> Moritz
> 
> "Hey, it compiles! Ship it!"
0
Lars
7/17/2009 6:41:40 PM
Hello,

Lars Brange wrote:

> I doubt this since I have a 64-bit Vista machine with 6GB memory and
> plenty of free disk space. I get a number of warnings (36 to be
> precise) from the linker almost immediately such as this:
> 
> [ILINK32 Warning] Warning: OBJ symbols         : 0x000fffd0 /
> 0x00100000 [ILINK32 Warning] Warning: unknown heap name   :
> 0x08000000 / 0x08000000

ah, this kind of error. I've seen a few of them in past releases, and
most of them prove to be linker bugs. I don't know how things are here,
but maybe someone from CodeGear (Lee?) is interested in taking a look
at your link set.


> Are there any way to see what other packages a package is dependent
> upon?

Yes, Dependency Walker.

-- 
Moritz

"Hey, it compiles! Ship it!"
0
Moritz
7/17/2009 7:35:22 PM
> {quote:title=Moritz Beutel wrote:}{quote}
> Hello,
> 
> Lars Brange wrote:
> 
> > I doubt this since I have a 64-bit Vista machine with 6GB memory and
> > plenty of free disk space. I get a number of warnings (36 to be
> > precise) from the linker almost immediately such as this:
> > 
> > [ILINK32 Warning] Warning: OBJ symbols         : 0x000fffd0 /
> > 0x00100000 [ILINK32 Warning] Warning: unknown heap name   :
> > 0x08000000 / 0x08000000
> 
> ah, this kind of error. I've seen a few of them in past releases, and
> most of them prove to be linker bugs. I don't know how things are here,
> but maybe someone from CodeGear (Lee?) is interested in taking a look
> at your link set.
> 

For others to know, this error has been fixed by patching ilink32.exe. Actually, my son offered me to take a look at the problem and he managed, in less than 5 minutes, to locate an interesting section in the code, recognizing the max value for "OBJ values" and changing a single byte to a higher value and it worked.... I can finally use CB2009... Its strange that these max values are there at the first place, anyway they should be set to higher values since I'm not the first one hitting them. 

If possible, I love my son even more now :-)

Lars Brange
0
Lars
7/25/2009 5:58:52 AM
Hello,

Lars Brange wrote:

> Actually, my son offered me to take a look at the problem and he
> managed, in less than 5 minutes, to locate an interesting section in
> the code, recognizing the max value for "OBJ values" and changing a
> single byte to a higher value and it worked....

I'm impressed!
Would you like to share the hack (i.e. byte offset and new value)?

-- 
Moritz

"Hey, it compiles! Ship it!"
0
Moritz
7/25/2009 10:51:24 AM
> {quote:title=Moritz Beutel wrote:}{quote}
> Hello,
> 
> Lars Brange wrote:
> 
> > Actually, my son offered me to take a look at the problem and he
> > managed, in less than 5 minutes, to locate an interesting section in
> > the code, recognizing the max value for "OBJ values" and changing a
> > single byte to a higher value and it worked....
> 
> I'm impressed!
> Would you like to share the hack (i.e. byte offset and new value)?
> 

Sure, here they are:

StringBlock       : 0x0004A8F8
Type names        : 0x0004A90C
External types    : 0x0004A920
Public types      : 0x0004A934
SegRelocs         : 0x0004A948
Line number cache : 0x0004A95C
OBJ symbols       : 0x0004A970
Import symbols    : 0x0004A984
Publics           : 0x0004A998
Public GSX        : 0x0004A9AC
Extdefs           : 0x0004A9C0
Extdef flags      : 0x0004A9D4
Virdefs           : 0x0004A9E8

Each max value is an int32. We have only tested for "OBJ symbols" and changed the byte at 0x0004A972 from 0x10 to 0x80. We just increased it by 8 at random and it worked the first time so we kept the value. Note that the offsets are probably only true for ILINK32 version 5.96 dated 2009-01-14. Please report any results from your investigations if you change other max values.

Regards,
Lars Brange
0
Lars
7/26/2009 10:38:38 AM
I have the problem with the "build with runtime packages" unchecked. but if i check the option,the  error is gone. 
In fact, the MyBitBtn.cpp file is  located in 'F:\bcb2009\sdlib\ctrls', not on 'E:\sdlib\ctrls\MyBitBtn.cpp'
Could you point out what should i do?


the following is the error message:
Checking project dependencies...
Compiling Project1.cbproj (Debug configuration)
[ILINK32 Warning] Warning: BSS                 : 0x00000000 / 0x00800000
[ILINK32 Warning] Warning: CODE                : 0x0004726c / 0x00800000
[ILINK32 Warning] Warning: DATA                : 0x00000c80 / 0x00800000
[ILINK32 Warning] Warning: DEBNAM              : 0x00016537 / 0x00800000
[ILINK32 Warning] Warning: DEBSYM              : 0x0003ce52 / 0x00800000
[ILINK32 Warning] Warning: DEBTYP              : 0x00030a1c / 0x00800000
[ILINK32 Warning] Warning: Extdef flags        : 0x00000413 / 0x00004000
[ILINK32 Warning] Warning: Extdefs             : 0x0000104c / 0x00004000
[ILINK32 Warning] Warning: External types      : 0x000008f0 / 0x00040000
[ILINK32 Warning] Warning: Import symbols      : 0x0000030c / 0x00100000
[ILINK32 Warning] Warning: Line number cache   : 0x00014154 / 0x00060000
[ILINK32 Warning] Warning: OBJ symbols         : 0x00025aac / 0x00100000
[ILINK32 Warning] Warning: Public GSX          : 0x00003250 / 0x000c0000
[ILINK32 Warning] Warning: Public types        : 0x00001318 / 0x00080000
[ILINK32 Warning] Warning: Publics             : 0x0001c4d0 / 0x000c0000
[ILINK32 Warning] Warning: SegRelocs           : 0x00059830 / 0x00800000
[ILINK32 Warning] Warning: StringBlock         : 0x00000580 / 0x00800000
[ILINK32 Warning] Warning: TLS                 : 0x0000000c / 0x00800000
[ILINK32 Warning] Warning: Type names          : 0x00004ac9 / 0x00100000
[ILINK32 Warning] Warning: UNKNOWN             : 0x00000018 / 0x00800000
[ILINK32 Warning] Warning: Virdefs             : 0x00001dfc / 0x00020000
[ILINK32 Warning] Warning: Extdef flags        : 0x00000000 / 0x00004000
[ILINK32 Warning] Warning: Extdefs             : 0x00000000 / 0x00004000
[ILINK32 Warning] Warning: F:/bcb2009/sdlib/lib/Project1.ilc: 0x001a0000 / 0x08000000
[ILINK32 Warning] Warning: F:/bcb2009/sdlib/lib/Project1.ild: 0x00010000 / 0x08000000
[ILINK32 Warning] Warning: F:/bcb2009/sdlib/lib/Project1.ilf: 0x00290000 / 0x08000000
[ILINK32 Warning] Warning: F:/bcb2009/sdlib/lib/Project1.ils: 0x00380000 / 0x03000000
[ILINK32 Warning] Warning: F:/bcb2009/sdlib/lib/Project1.tds: 0x003e0000 / 0x08000000
[ILINK32 Warning] Warning: Import symbols      : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: OBJ symbols         : 0x00000000 / 0x00100000
[ILINK32 Warning] Warning: Public GSX          : 0x00015554 / 0x000c0000
[ILINK32 Warning] Warning: Publics             : 0x000bfff4 / 0x000c0000
[ILINK32 Warning] Warning: StringBlock         : 0x0000001c / 0x00800000
[ILINK32 Warning] Warning: Virdefs             : 0x00000000 / 0x00020000
[ILINK32 Warning] Warning: unknown heap name   : 0x08000000 / 0x08000000
[ILINK32 Error] Fatal: Exceeded memory limit for block Publics in module E:\sdlib\ctrls\MyBitBtn.cpp
Failed
Elapsed time: 00:00:00.5

Edited by: Registered User on Oct 29, 2009 11:52 PM
0
Registered
10/30/2009 6:52:54 AM
I was able to fix this for 2007 as well. The offset was different, but look at the string objects around it, and its the same relative to those.

Edited by: chad williamson on Jan 7, 2010 12:52 PM
0
chad
1/7/2010 8:53:44 PM
> {quote:title=chad williamson wrote:}{quote}
> I was able to fix this for 2007 as well. The offset was different, but look at the string objects around it, and its the same relative to those.
> 
> Edited by: chad williamson on Jan 7, 2010 12:52 PM

I'm running into a similar issue with ilinker v6.00. How do you locate which byte to change? do you crack ilink32.exe open with a disassembler? Do you open it up in a hex editor and look for ascii strings? How do you do it?
0
Vic
9/11/2010 6:42:22 AM
Reply:

Similar Artilces:

[ILINK32 Error] Fatal: Exceeded memory limit for block SegRelocs in module
CG2007,latest release. This is a fairly large project. I get this error in debug builds but not in Release builds. I am not including CodeGuard. I'm sure there's a Linker setting but for the life of me, I can find no SegRelocs. Any suggestions. > {quote:title=charles leggette wrote:}{quote} > Any suggestions. Hi Charles, I sent you a PM so please be sure to check there. Regards, Lee what's a PM and where do I find it [sorry to be so dumb!].... "Lee Cantey" wrote in message news:58714@forums.codegear.com... >> {quote:title=charles leggett...

[ILINK32 Error] Fatal: Exceeded memory limit for block Line number cache
I am using C++ Builder XE (RAD Studio XE Enterprise). I am compiling a program with a lot of included files and I got this error message: [ILINK32 Error] Fatal: Exceeded memory limit for block Line number cache in module 'program_name' I increased windows cache memory but this did not fix the problem. Is there an option I can set in the compiler and/or linker to fix it? ...

[Linker Fatal Error] Fatal: Exceeded memory limit for block Line number ...
Hi Forum members, Iam getting the below error after compiling my CPP project inside the BDS 2006 IDE. I dont get any error during compile time. So only during linking it tells the below error: [Linker Fatal Error] Fatal: Exceeded memory limit for block Line number cache in module <my_path>/DrawingBoard.cpp In the above error <my_path> is just a place holder that replaces the actual absolute path on my machine where exactly the file "DrawingBoard.cpp" resides. Now I have following queries: 1) Is this linker fatal error anyway related to the source file "...

Linker Error: Exceeded memory limit for block Extdefs
Hi All, I'm using a 3rd party internet component, which works fine on small projects, but when I added it to my big project I get this weird linker error: "Exceeded memory limit for block Extdefs in module xxxx.cpp". If I take the component out, the linker error goes away, and if I put it back, the linker error returns. Does anyone have any idea what this error means and how to make the IDE happy? TIA, Earik > {quote:title=Earik Beann wrote:}{quote} > Hi All, > > I'm using a 3rd party internet component, which works fine on small projects, but when ...

[ilink32 Error] Fatal: Out of memory
We hit a wall with our big project. ilink32.exe 6.70 (XE7) reports out of memory (compiling from IDE). Rebooting the PC used to help but no more. For what I read, it's decade old issue that have never been fixed. Do you have any advises how I may overcome this issue? Is there some fixed, patched (ala IDEFixPack) ilink32.exe version? Tried some old suggestion and use ulink, but getting +italics+ [ulink Error] Error: Invalid (self) relocation to __declspec(dllimport) extern in 'c:\program files (x86)\programming\embarcadero\studio\15.0\lib\Win32\debug\rtl.lib|System.ZLib.pas...

[ID 20000710.002] fatal error or memory loss when deleting symbols in evaled code with syntax errors
This is a bug report for perl from s_sperli@ira.uka.de, generated with the help of perlbug 1.26 running under perl 5.00503. ----------------------------------------------------------------- Hi Perlbug Team! The bug occurs when trying to delete symbols (a whole package most of the time) pulled in using eval that has a syntax error. Test 1: this is perfectly ok: perl -we 'eval "package f; 1"; print "evaled\n"; undef &main::f::BEGIN; pr= int("deleted\n")' but this dies on the undef: perl -we 'eval "package f; |"; print &...

[ILINK32 Error] Error: Error processing module
Hi! I have this error when trying to build a project of mine, using XE2 Update4: {code} [ILINK32 Error] Error: Error processing module [ILINK32 Error] Error: Unable to perform link {code} The project uses some source files from another project that is maintained by a different developer. Since I did an update on those files, I get this message. Whenever I restore the files, build is successful, so it is pretty obvious that something changed in those files that makes linking unsuccessful. But how can I track down which file is the one (out from around 100)? Regarding to the he...

Exceeded Memory Limit for block ExtDefs
I have a project that complies fine in XE but I get the Exceeded memory limit error in XE2. I don't know where to look to try to fix. Any Ideas? ...

[ilink32 Error] Fatal: Out of memory [Edit]
We hit a wall with our big project. ilink32.exe 6.70 (XE7) reports out of memory (compiling from IDE). Rebooting the PC used to help but no more. For what I read, it's decade old issue that have never been fixed. Do you have any advises how I may overcome this issue? Is there some fixed, patched (ala IDEFixPack) ilink32.exe version? Tried some old suggestion and use ulink, but getting +[ulink Error] Error: Invalid (self) relocation to __declspec(dllimport) extern in 'c:\program files (x86)\programming\embarcadero\studio\15.0\lib\Win32\debug\rtl.lib|System.ZLib.pas'+ ul...

[ilink32 Error] Fatal: Out of memory [Edit]
We hit a wall with our big project. ilink32.exe 6.70 (XE7) reports out of memory (compiling from IDE). Rebooting the PC used to help but no more. For what I read, it's decade old issue that have never been fixed. Do you have any advises how I may overcome this issue? Is there some fixed, patched (ala IDEFixPack) ilink32.exe version? Tried some old suggestion and use ulink, but getting +[ulink Error] Error: Invalid (self) relocation to __declspec(dllimport) extern in 'c:\program files (x86)\programming\embarcadero\studio\15.0\lib\Win32\debug\rtl.lib|System.ZLib.pas'+ ul...

ilink32 fatal error not enough memory
Hi I'm using c++ builder xe4. My project is a vcl application which compiles fine but raise an ilink32 fatal error (not enough memory) at final linking stage. In the old days (BCB6) I had already hit a ilink32 limitation with big projects. Does anybody know if there's still such limitation in XE4 ? Or best, does anybody know which parameter to tweek or any workaround ? Thank you. <eric britz> wrote in message news:658464@forums.embarcadero.com... > > Does anybody know if there's still such limitation in XE4 ? Yes. It's still a problem for some peo...

Exceeded memory limit for block line number cache
I am getting this error when attempting to link a HUGE C program. Apparently I have overflowed some linker limitation. Is there some way around this? Borland C++ compiles this program just fine, but CBuilder 2007 apparently can't handle it. I would hate to have to keep Borland C++ around for this one program. In article <173396@forums.codegear.com>, Stephen Boyd <> wrote: > I am getting this error when attempting to link a HUGE C program. Apparently > I have overflowed some linker limitation. Is there some way around this? > Borland C++ compiles this prog...

[ilink32 Error] Fatal: Unable to open file Types.obj [Edit]
After doing some work, this error started showing up. I don't know what I did to cause it, other then change some library paths, that were lost during the upgrade from xe2 to xe3. Anybody know how to get around it? This has been addressed elsewhere in the forum, by Remy Lebeau (TeamB) {code} You have two choices: 1) Go into the Project Options and make sure "System" is included in the "Unit scope names" list. 2) change the code to refer to "System.Types" instead of "Types". {code} My project is cbuilder, I'm not sure how System.T...

[ILINK32 Error] Fatal: The symbol @%Foo$i%@$barow$xqv has zero size, or ...
Any idea what this means? [ILINK32 Error] Fatal: The symbol @%Foo$i%@$barow$xqv has zero size, or excessive offset in module 'S:\..\FILE1.OBJ' Hello, > Any idea what this means? > > [ILINK32 Error] Fatal: The symbol @%Foo$i%@$barow$xqv has zero size, or > excessive offset in module 'S:\..\FILE1.OBJ' Before creating a fixing to a particular entry-point the linker verifies that the entry-point is indeed valid. Whenever you hit that error it typically means the compiler [dcc32 or bcc32] created an invalid .obj. Cheers, Bruneau > {quote:tit...

Web resources about - [ILINK32 Error] Fatal: Exceeded memory limit for block OBJ symbols in modul - embarcadero.cppbuilder.ide

Command-Line Utilities Index
Show: Delphi C++ Display Preferences Command-Line Utilities Index From RAD Studio Jump to: navigation , search Go Up to C++ Reference C++Builder ...

Unsupported Tools - Andy's Blog and Tools
Andy's Blog and Tools Delphi, C++Builder and other thoughts Skip to content Home IDE Tools DDevExtensions 2.6 IDE Fix Pack 5.1 IDE Fix Pack 2007 ...

Resources last updated: 1/28/2016 2:35:19 PM