perl - segfault on "free unused scalar"

Krzysztof Duleba krzysan@skrzynka.pl
Wed Jul 27 13:50:00 GMT 2005


Gerrit P. Haase wrote:

>> $ ./inter.pl
>> perl> sub foo($){$a=shift;foo($a+1);}
>> perl> foo 1
>> Out of memory during "large" request for 134221824 bytes, total sbrk() 
>> is 273211392 bytes at (eval 18) line 1.
>> perl> foo 1
>> Out of memory during request for 67289644 bytes, total sbrk() is 
>> 394086400 bytes
>> !
>> Attempt to free unreferenced scalar: SV 0x1d079aec, Perl interpreter: 
>> 0x10140240 at (eval 18) line 1.
>> Segmentation fault (core dumped)
> 
> With 5.8.7 I get the core dump after calling `foo 1` the first time:
> 
> $ ./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)

How many times did you try that? With 5.8.7 I get either

perl> sub foo($){$a=shift;foo($a+1);}
perl> foo 1
Out of memory during "large" request for 134221824 bytes, total sbrk() is 
273213440 bytes at (eval 18) line 1.
perl> foo 1
Attempt to free unreferenced scalar: SV 0x1d07a3ac, Perl interpreter: 
0x10140240 at (eval 18) line 1.
Segmentation fault (core dumped)

or, like you

perl> sub foo($){$a=shift;foo($a+1);}
perl> foo 1
Out of memory during request for 4040 bytes, total sbrk() is 402620416 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?

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/



More information about the Cygwin mailing list