develooper Front page | perl.perl5.porters | Postings from April 2012

Re: [perl #112608] panic: sv_setpvn called with negative strlen -1

Thread Previous | Thread Next
From:
Karl Williamson
Date:
April 25, 2012 19:58
Subject:
Re: [perl #112608] panic: sv_setpvn called with negative strlen -1
Message ID:
4F98B9CA.4050102@khwilliamson.com
On 04/25/2012 05:15 AM, Leon Timmermans wrote:
> 2012/4/25 Steve Hay<perlbug-followup@perl.org>:
>> Running the program below with the attached utf8.txt input file produces
>> the following crash:
>> panic: sv_setpvn called with negative strlen -1 at utf8.pl line 4,<$rh>
>> line 28.
>> Close with partial character at utf8.pl line 4,<$rh>  line 28.
>>
>> open my $rh, '<:encoding(UTF-8)', 'utf8.txt' or die $!;
>> open my $wh, '>:encoding(ISO-8859-1)', 'iso88591.txt' or die $!;
>> #select((select($wh), $| = 1)[0]);
>> print $wh $_ while<$rh>;
>> close $wh;
>> close $rh;
>>
>> Obviously the (Greek) characters in the input file cannot be converted
>> to ISO-8859-1, but perl shouldn't crash.
>
> This crash only seems to happen when combining :crlf with :encoding. I
> suspect we need a smaller test-case to make it obvious what's really
> happening.
>
>> Uncommenting the select() call strangely makes the crash go away. So
>> does deleting any single line from the input file.
>
> Another thing that makes it go away: removing the byte order mark in
> your file. This is smelling fishy.
>
> Leon
>

I could not get this to reproduce on my machine with blead.  Instead, I 
get messages like:
   \x{feff}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
  "\x{039f}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
  "\x{03af}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
  "\x{03a3}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
  "\x{03c5}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
  "\x{03bd}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28.
...
  "\x{03cd}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28.
  "\x{03b6}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28.
  "\x{03b5}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28.
  "\x{03b9}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28.

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About