Error linking under Cygwin: fork: can't reserve memory for stack XXX, Win32 error 487

Martin Egholm Nielsen martin@egholm-nielsen.dk
Thu Mar 3 08:42:00 GMT 2005


Hi,

>>I've ended up here after having rounded the gcc-irc-channel and the 
>>crosscompiler mailing-list.
>>
>>The story:
>>
>>I have compiled a gcc crosscompiler hosted under Cygwin using Dan 
>>Kegel's Crosstool scripts.
>>
>>However, as my application is growing in size (number of .o files) I 
>>suddenly get the following fault message from collect2.exe when trying 
>>to link them all together:
>>
>>$ powerpc-405-linux-gnu-gcj --main=foo.Main *.o
>>C:\cygwin\opt\crosstool\powerpc-405-linux-gnu\gcc-3.4.0-glibc-2.2.5\libexec\gcc\powerpc-405-linux-gnu\3.4.0\collect2.exe 
>>(1740): *** fork: can't reserve memory for stack 0x40000 - 0x240000, Win32 
>>error 487
>><REPEATED>
>>
>>There is roughly 600 .o files to link together.
>>
>>Andrew Haley from RedHat mentioned that
>>"There's some magic in Win32 to extend the size of a stack segment"
>>"I can't remember the command"
>>
>>Can anybody on this list help me out here?

>   % gcc -v --help |& grep stack
>     -fstack-limit-register=<register>  Trap if the stack goes past <register>
>     -fstack-limit-symbol=<name>  Trap if the stack goes past symbol <name>
>     -fstack-check           Insert stack checking code into the program
>     -fomit-frame-pointer    When possible do not generate stack frames
>     -fdefer-pop             Defer popping functions args from stack until later
>     -fstack-checking        Enable stack checking (same as `{$S+}')
>     -fno-stack-checking     Disable stack checking (same as `{$S-} (default)')
>     -mstack-arg-probe         Enable stack probing
>     -mpreferred-stack-boundar Attempt to keep stack aligned to this power of 2
>     --stack <size>                     Set size of the initial stack
>     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hum, these options are not available in my crosscompiler:

$ powerpc-405-linux-gnu-gcc -v --help 2>&1 | grep stack
   -fdefer-pop                 Defer popping functions args from stack until
   -fomit-frame-pointer        When possible do not generate stack frames
   -fstack-check               Insert stack checking code into the program
   -fstack-limit               This switch lacks documentation
   -fstack-limit-register=<register> Trap if the stack goes past <register>
   -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
   --execstack             require executable stack for this object
   --noexecstack           don't require executable stack for this object
   -z execstack          Mark executable as requiring executable stack
   -z noexecstack        Mark executable as not requiring executable stack
   -z execstack          Mark executable as requiring executable stack
   -z noexecstack        Mark executable as not requiring executable stack
   -z execstack          Mark executable as requiring executable stack
   -z noexecstack        Mark executable as not requiring executable stack

> However, this may actually also be a sign that you need to run rebaseall.
I've tried running rebaseall without any errors, but also without any 
changes in the above behavior...

// Martin


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list