Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"warn" causes segmentation fault in Encode #8928

Closed
p5pRT opened this issue Jun 14, 2007 · 12 comments
Closed

"warn" causes segmentation fault in Encode #8928

p5pRT opened this issue Jun 14, 2007 · 12 comments

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Jun 14, 2007

Migrated from rt.perl.org#43214 (status was 'resolved')

Searchable as RT43214$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 14, 2007

From vincent-perl@vinc17.net

Created by vincent@vinc17.org

The following script causes a segmentation fault​:

#!/usr/bin/env perl

use strict;
use I18N​::Langinfo qw(langinfo CODESET);

my $encoding = langinfo CODESET;
print "Encoding​: $encoding\n";

my $agrave = chr(0xe0);
my $str = "A grave = '$agrave'";
print "Test 1\n";
print STDERR " print​: $str\n";
print "Test 2\n";
warn " warn​: $str\n";
binmode STDERR, "​:encoding($encoding)";
print "Test 3\n";
print STDERR " print​: $str\n";
print "Test 4\n";
warn " warn​: $str\n";

$ ./warntest
Encoding​: ISO-8859-1
Test 1
  print​: A grave = 'à'
Test 2
  warn​: A grave = 'à'
Test 3
  print​: A grave = 'à'
Test 4
zsh​: segmentation fault (core dumped) ./warntest

The backtrace​:

(gdb) bt
#0 0xb7e6effc in _int_malloc () from /lib/i686/cmov/libc.so.6
#1 0xb7e70d0e in malloc () from /lib/i686/cmov/libc.so.6
#2 0x080ac83f in Perl_safesysmalloc ()
#3 0x080cae8c in Perl_sv_grow ()
#4 0x080cafa3 in Perl_newSV ()
#5 0xb7ba6fd3 in ?? () from /usr/lib/perl/5.8/auto/Encode/Encode.so
#6 0x0814e008 in ?? ()
#7 0x00000401 in ?? ()
#8 0x00000000 in ?? ()

There seems to be something wrong with the backtrace. With 5.8.7,
there was an infinite recursion, as shown by​:

  http​://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343831

Perl Info

Flags:
    category=core
    severity=medium

Site configuration information for perl v5.8.8:

Configured by Debian Project at Wed Dec  6 23:17:41 UTC 2006.

Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=linux, osvers=2.6.18.3, archname=i486-linux-gnu-thread-multi
    uname='linux saens 2.6.18.3 #1 smp sat nov 25 13:39:52 est 2006 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.1.2 20061115 (prerelease) (Debian 4.1.1-20)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8
    gnulibc_version='2.3.6'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:
    


@INC for perl v5.8.8:
    /home/vlefevre/lib/site_perl/i486-linux-gnu-thread-multi
    /home/vlefevre/lib/site_perl
    /etc/perl
    /usr/local/lib/perl/5.8.8
    /usr/local/share/perl/5.8.8
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.8
    /usr/share/perl/5.8
    /usr/local/lib/site_perl
    .


Environment for perl v5.8.8:
    HOME=/home/vlefevre
    LANG=POSIX
    LANGUAGE (unset)
    LC_COLLATE=POSIX
    LC_CTYPE=en_US.ISO8859-1
    LC_TIME=en_DK
    LD_LIBRARY_PATH=/lib:/home/vlefevre/i686/lib:/home/vlefevre/lib
    LOGDIR (unset)
    PATH=/home/vlefevre/bin:/home/vlefevre/i686/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/games:/usr/milip-local/stow/maple-10/maple/bin:.
    PERL5LIB=/home/vlefevre/lib/site_perl
    PERL_BADLANG (unset)
    SHELL=zsh

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

From @smpeters

On Thu Jun 14 03​:57​:22 2007, vincent <!-- x --> at vinc17.org wrote​:

This is a bug report for perl from vincent <!-- x --> at vinc17.org,
generated with the help of perlbug 1.35 running under perl v5.8.8.

-----------------------------------------------------------------
[Please enter your report here]

The following script causes a segmentation fault​:

#!/usr/bin/env perl

use strict;
use I18N​::Langinfo qw(langinfo CODESET);

my $encoding = langinfo CODESET;
print "Encoding​: $encoding\n";

my $agrave = chr(0xe0);
my $str = "A grave = '$agrave'";
print "Test 1\n";
print STDERR " print​: $str\n";
print "Test 2\n";
warn " warn​: $str\n";
binmode STDERR, "​:encoding($encoding)";
print "Test 3\n";
print STDERR " print​: $str\n";
print "Test 4\n";
warn " warn​: $str\n";

$ ./warntest
Encoding​: ISO-8859-1
Test 1
print​: A grave = 'à'
Test 2
warn​: A grave = 'à'
Test 3
print​: A grave = 'à'
Test 4
zsh​: segmentation fault (core dumped) ./warntest

The backtrace​:

(gdb) bt
#0 0xb7e6effc in _int_malloc () from /lib/i686/cmov/libc.so.6
#1 0xb7e70d0e in malloc () from /lib/i686/cmov/libc.so.6
#2 0x080ac83f in Perl_safesysmalloc ()
#3 0x080cae8c in Perl_sv_grow ()
#4 0x080cafa3 in Perl_newSV ()
#5 0xb7ba6fd3 in ?? () from /usr/lib/perl/5.8/auto/Encode/Encode.so
#6 0x0814e008 in ?? ()
#7 0x00000401 in ?? ()
#8 0x00000000 in ?? ()

There seems to be something wrong with the backtrace. With 5.8.7,
there was an infinite recursion, as shown by​:

http​://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343831

I can't reproduce this problem, but I also don't know what version of
Encode you're using. Please reply to this email with the output from...

  perl -MEncode -wle'print $Encode​::VERSION'

Thanks!

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

From vincent-perl@vinc17.net

On 2007-06-29 09​:05​:41 -0700, Steve Peters via RT wrote​:

I can't reproduce this problem, but I also don't know what version of
Encode you're using. Please reply to this email with the output from...

perl \-MEncode \-wle'print $Encode&#8203;::VERSION'

$ perl -MEncode -wle'print $Encode​::VERSION'
2.12

Note​: the module is provided by the Debian perl package (current
perl package version​: 5.8.8-7).

--
Vincent Lefèvre <vincent@​vinc17.org> - Web​: <http​://www.vinc17.org/>
100% accessible validated (X)HTML - Blog​: <http​://www.vinc17.org/blog/>
Work​: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

From vincent-perl@vinc17.net

Note​: this is even worse with the C locale​:

vin% locale
LANG=POSIX
LC_CTYPE=en_US.ISO8859-1
LC_NUMERIC="POSIX"
LC_TIME=en_DK
LC_COLLATE=POSIX
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
vin% ./warntest
Encoding​: ISO-8859-1
Test 1
  print​: A grave = 'à'
Test 2
  warn​: A grave = 'à'
Test 3
  print​: A grave = 'à'
Test 4
zsh​: segmentation fault (core dumped) ./warntest
vin% LC_ALL=C ./warntest
Encoding​: ANSI_X3.4-1968
Test 1
  print​: A grave = 'à'
Test 2
  warn​: A grave = 'à'
Test 3
zsh​: segmentation fault (core dumped) LC_ALL=C ./warntest
vin%

--
Vincent Lefèvre <vincent@​vinc17.org> - Web​: <http​://www.vinc17.org/>
100% accessible validated (X)HTML - Blog​: <http​://www.vinc17.org/blog/>
Work​: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

From @smpeters

On Fri Jun 29 09​:25​:45 2007, vincent <!-- x --> at vinc17.org wrote​:

On 2007-06-29 09​:05​:41 -0700, Steve Peters via RT wrote​:

I can't reproduce this problem, but I also don't know what version of
Encode you're using. Please reply to this email with the output from...

perl \-MEncode \-wle'print $Encode&#8203;::VERSION'

$ perl -MEncode -wle'print $Encode​::VERSION'
2.12

Note​: the module is provided by the Debian perl package (current
perl package version​: 5.8.8-7).

Can you replicate the problem with the most recent version available on
CPAN (2.23)?

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 29, 2007

From vincent-perl@vinc17.net

On 2007-06-29 13​:58​:10 -0700, Steve Peters via RT wrote​:

Can you replicate the problem with the most recent version available
on CPAN (2.23)?

Same problem (here under Mac OS X)​:

prunille% perl -MEncode -wle'print $Encode​::VERSION'
2.23
prunille% ./warntest
Encoding​: ISO8859-1
Test 1
  print​: A grave = 'à'
Test 2
  warn​: A grave = 'à'
Test 3
  print​: A grave = 'à'
Test 4
zsh​: segmentation fault ./warntest
prunille% LC_ALL=C ./warntest
Encoding​: US-ASCII
Test 1
  print​: A grave = 'à'
Test 2
  warn​: A grave = 'à'
Test 3
zsh​: segmentation fault LC_ALL=C ./warntest
prunille%

--
Vincent Lefèvre <vincent@​vinc17.org> - Web​: <http​://www.vinc17.org/>
100% accessible validated (X)HTML - Blog​: <http​://www.vinc17.org/blog/>
Work​: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Oct 29, 2009

From vincent@vinc17.net

With perl 5.10.0 and 5.10.1, I no longer get a segmentation fault,
but the result of Test 4 is incorrect​:

Encoding​: ISO-8859-1
[...]
Test 4
  warn​: A grave = '\x{09ca}

without a newline, and under UTF-8 locales​:

Encoding​: UTF-8
[...]
Test 4
  warn​: A grave = '\xE0'

--
Vincent Lefèvre <vincent@​vinc17.net> - Web​: <http​://www.vinc17.net/>
100% accessible validated (X)HTML - Blog​: <http​://www.vinc17.net/blog/>
Work​: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 16, 2013

From @jkeenan

On Thu Oct 29 08​:56​:06 2009, vincent@​vinc17.net wrote​:

With perl 5.10.0 and 5.10.1, I no longer get a segmentation fault,
but the result of Test 4 is incorrect​:

Encoding​: ISO-8859-1
[...]
Test 4
warn​: A grave = '\x{09ca}

without a newline, and under UTF-8 locales​:

Encoding​: UTF-8
[...]
Test 4
warn​: A grave = '\xE0'

There has been no correspondence in this RT in more than four years.

Tonight I built Perl blead with -Dusethreads and -Duselargefiles on the Dromedary server, then ran the OP's program. This was the output​:

#####
$ ./perl -Ilib ../p5p/43214-langinfo.pl
Encoding​: UTF-8
Test 1
  print​: A grave = '?'
Test 2
  warn​: A grave = '?'
Test 3
  print​: A grave = 'à'
Test 4
  warn​: A grave = 'à'
#####

Is there still a problem which needs addressing?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 16, 2013

From vincent@vinc17.net

On 2013-12-15 18​:58​:28 -0800, James E Keenan via RT wrote​:

Is there still a problem which needs addressing?

No, everything is OK (both with ISO-8859-1 and with UTF-8) in
Debian/unstable, using perl v5.18.1.

This bug can be closed.

--
Vincent Lefèvre <vincent@​vinc17.net> - Web​: <http​://www.vinc17.net/>
100% accessible validated (X)HTML - Blog​: <http​://www.vinc17.net/blog/>
Work​: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 17, 2013

From @jkeenan

On Mon Dec 16 10​:18​:03 2013, vincent@​vinc17.net wrote​:

On 2013-12-15 18​:58​:28 -0800, James E Keenan via RT wrote​:

Is there still a problem which needs addressing?

No, everything is OK (both with ISO-8859-1 and with UTF-8) in
Debian/unstable, using perl v5.18.1.

This bug can be closed.

Closing per request from OP.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 17, 2013

@jkeenan - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant