FAQ
# New Ticket Created by Vincent Lefevre
# Please include the string: [perl #43214]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43214 >



This is a bug report for perl from vincent@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

[Please do not change anything below this line]
-----------------------------------------------------------------
---
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

Search Discussions

  • Steve Peters via RT at Jun 29, 2007 at 4:05 pm

    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!
  • Vincent Lefevre at Jun 29, 2007 at 4:25 pm

    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::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)
  • Steve Peters via RT at Jun 29, 2007 at 8:58 pm

    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::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)?
  • Vincent Lefevre at Jun 29, 2007 at 10:28 pm

    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)
  • Vincent Lefevre at Oct 29, 2009 at 12:01 pm
    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)
  • James E Keenan via RT at Dec 16, 2013 at 2:58 am

    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


    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org/Ticket/Display.html?id=43214
  • Vincent Lefevre at Dec 16, 2013 at 9:14 am

    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)
  • Vincent Lefevre at Jun 29, 2007 at 4:28 pm
    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)

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupperl5-porters @
categoriesperl
postedJun 14, '07 at 10:58a
activeDec 16, '13 at 9:14a
posts9
users3
websiteperl.org

People

Translate

site design / logo © 2022 Grokbase