This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: perl - segfault on "free unused scalar"


Gerrit P. Haase wrote:

$ ./inter.pl
perl> sub foo($){$a=shift;foo($a+1);}
perl> foo 1
Out of memory during request for 4040 bytes, total sbrk() is 402624512 bytes!
Segmentation fault (core dumped)

Another version (with "my $a"):


perl> sub foo($){my $a=shift;foo($a+1);}
perl> foo 1
Out of memory during "large" request for 134221824 bytes, total sbrk() is 304633856 bytes at (eval 19) line 1.
perl> foo 1
Bad realloc() ignored at (eval 19) line 1.
Segmentation fault (core dumped)


Is this a perl bug, Cygwin bug, or just a feature?

I don't know. Maybe it is a Windows feature that applications running out of memory are crashing?

But there's plenty of memory left when perl crashes. I have 1 GB RAM and 1 GB swap file.


I've simplified the test case. It seems that Cygwin perl can't handle too much memory. For instance:

$ perl -e '$a="a"x(200 * 1024 * 1024); sleep 9'

OK, this could have failed because $a might require 200 MB of continuous space. But hashes don't, do they? Then why does the following code fail?

$ perl -e '$a="a"x(1024 * 1024);my %b; $b{$_}=$a for(1..400);sleep 9'

Or that one?

$ perl -e '$a="a"x(50 * 1024 * 1024);$b=$a;$c=$a;$d=$a;$e=$a;sleep 10'

On linux there's no such problem - perl can use all available memory.

Krzysztof Duleba


-- 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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]