# New Ticket Created by [EMAIL PROTECTED] # Please include the string: [perl #37234] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=37234 >
This is a bug report for perl from [EMAIL PROTECTED], generated with the help of perlbug 1.35 running under perl v5.8.7. ----------------------------------------------------------------- [Please enter your report here] Hello, I have recently seen perl crashing with segfault for certain combinations of locale and output. I have finally managed to narrow the problem down to the following snippet (note, that it is utf-8 encoded and contains a non-iso-8859-* character): #!/usr/bin/perl use utf8; $string = "è¶\n"; binmode STDERR, ":encoding(iso-8859-2)"; print STDERR $string; __END__ This script crashes on 3 different systems. One is SuSE 9.0 with perl 5.8.1, another is Debian Etch on i686 with perl 5.8.7 and this one which is Debian Sid on amd64 with perl 5.8.7. The script does NOT crash when STDERR is replaced by STDOUT, but rather prints: "\x{8336}" does not map to iso-8859-2 at perlio-bug.pl line 9. \x{8336} as expected. Since the contents of the perlio layer stack might be important here, these are dumps of default perlio stacs (with commands that produced them): [EMAIL PROTECTED]:~$ perl -MData::Dumper -MPerlIO -e 'print Dumper(PerlIO::get_layers(STDERR, details => 1))' $VAR1 = 'unix'; $VAR2 = undef; $VAR3 = 13177344; $VAR4 = 'perlio'; $VAR5 = undef; $VAR6 = 13177344; [EMAIL PROTECTED]:~$ perl -MData::Dumper -MPerlIO -e 'print Dumper(PerlIO::get_layers(STDOUT, details => 1))' $VAR1 = 'unix'; $VAR2 = undef; $VAR3 = 13111808; $VAR4 = 'perlio'; $VAR5 = undef; $VAR6 = 13111808; [EMAIL PROTECTED]:~$ perl -MData::Dumper -MPerlIO -e 'binmode(STDERR, ":encoding(iso-8859-2)"); print Dumper(PerlIO::get_layers(STDERR, details => 1))' $VAR1 = 'unix'; $VAR2 = undef; $VAR3 = 13144576; $VAR4 = 'perlio'; $VAR5 = undef; $VAR6 = 13144576; $VAR7 = 'encoding'; $VAR8 = 'iso-8859-2'; $VAR9 = 13144576; [EMAIL PROTECTED]:~$ perl -MData::Dumper -MPerlIO -e 'binmode(STDOUT, ":encoding(iso-8859-2)"); print Dumper(PerlIO::get_layers(STDOUT, details => 1))' $VAR1 = 'unix'; $VAR2 = undef; $VAR3 = 13144576; $VAR4 = 'perlio'; $VAR5 = undef; $VAR6 = 13144576; $VAR7 = 'encoding'; $VAR8 = 'iso-8859-2'; $VAR9 = 13144576; This is a distribution perl, which is stripped, so the backtrace won't be exactly useful, but here it is (or rather part of it) anyway: (gdb) bt #0 0x00002aaaab20c844 in realloc () from /lib/libc.so.6 #1 0x00002aaaaac3f68f in Perl_safesysrealloc () from /usr/lib/libperl.so.5.8 #2 0x00002aaaaac5ed8b in Perl_sv_grow () from /usr/lib/libperl.so.5.8 #3 0x00002aaaaac6c2ce in Perl_sv_catpvn_flags () from /usr/lib/libperl.so.5.8 #4 0x00002aaaaac69807 in Perl_sv_vcatpvfn () from /usr/lib/libperl.so.5.8 #5 0x00002aaaaac409f8 in Perl_vmess () from /usr/lib/libperl.so.5.8 #6 0x00002aaaaac41955 in Perl_vwarn () from /usr/lib/libperl.so.5.8 #7 0x00002aaaaac41fd3 in Perl_vwarner () from /usr/lib/libperl.so.5.8 #8 0x00002aaaaac42183 in Perl_warner () from /usr/lib/libperl.so.5.8 #9 0x00002aaaab8125cd in call_failure () from /usr/lib/perl/5.8/auto/Encode/Encode.so #10 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so #11 0x00002aaaaac59625 in Perl_pp_entersub () from /usr/lib/libperl.so.5.8 #12 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #13 0x00002aaaaabf90c8 in Perl_call_sv () from /usr/lib/libperl.so.5.8 #14 0x00002aaaab70d285 in PerlIOEncode_flush () from /usr/lib/perl/5.8/auto/PerlIO/encoding/encoding.so #15 0x00002aaaaacbab5f in Perl_PerlIO_flush () from /usr/lib/libperl.so.5.8 #16 0x00002aaaaacbf0ed in PerlIOBuf_write () from /usr/lib/libperl.so.5.8 #17 0x00002aaaaac40d1e in Perl_write_to_stderr () from /usr/lib/libperl.so.5.8 #18 0x00002aaaaac41baf in Perl_vwarn () from /usr/lib/libperl.so.5.8 #19 0x00002aaaaac41fd3 in Perl_vwarner () from /usr/lib/libperl.so.5.8 #20 0x00002aaaaac42183 in Perl_warner () from /usr/lib/libperl.so.5.8 #21 0x00002aaaab8125cd in call_failure () from /usr/lib/perl/5.8/auto/Encode/Encode.so #22 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so #23 0x00002aaaaac59625 in Perl_pp_entersub () from /usr/lib/libperl.so.5.8 #24 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #25 0x00002aaaaabf90c8 in Perl_call_sv () from /usr/lib/libperl.so.5.8 #26 0x00002aaaab70d285 in PerlIOEncode_flush () from /usr/lib/perl/5.8/auto/PerlIO/encoding/encoding.so #27 0x00002aaaaacbab5f in Perl_PerlIO_flush () from /usr/lib/libperl.so.5.8 #28 0x00002aaaaacbf0ed in PerlIOBuf_write () from /usr/lib/libperl.so.5.8 #29 0x00002aaaaac40d1e in Perl_write_to_stderr () from /usr/lib/libperl.so.5.8 #30 0x00002aaaaac41baf in Perl_vwarn () from /usr/lib/libperl.so.5.8 #31 0x00002aaaaac41fd3 in Perl_vwarner () from /usr/lib/libperl.so.5.8 #32 0x00002aaaaac42183 in Perl_warner () from /usr/lib/libperl.so.5.8 #33 0x00002aaaab8125cd in call_failure () from /usr/lib/perl/5.8/auto/Encode/Encode.so #34 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so #35 0x00002aaaaac59625 in Perl_pp_entersub () from /usr/lib/libperl.so.5.8 #36 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #37 0x00002aaaaabf90c8 in Perl_call_sv () from /usr/lib/libperl.so.5.8 #38 0x00002aaaab70d285 in PerlIOEncode_flush () from /usr/lib/perl/5.8/auto/PerlIO/encoding/encoding.so #39 0x00002aaaaacbab5f in Perl_PerlIO_flush () from /usr/lib/libperl.so.5.8 #40 0x00002aaaaacbf0ed in PerlIOBuf_write () from /usr/lib/libperl.so.5.8 #41 0x00002aaaaac40d1e in Perl_write_to_stderr () from /usr/lib/libperl.so.5.8 #42 0x00002aaaaac41baf in Perl_vwarn () from /usr/lib/libperl.so.5.8 #43 0x00002aaaaac41fd3 in Perl_vwarner () from /usr/lib/libperl.so.5.8 #44 0x00002aaaaac42183 in Perl_warner () from /usr/lib/libperl.so.5.8 #45 0x00002aaaab8125cd in call_failure () from /usr/lib/perl/5.8/auto/Encode/Encode.so #46 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so #47 0x00002aaaaac59625 in Perl_pp_entersub () from /usr/lib/libperl.so.5.8 #48 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #49 0x00002aaaaabf90c8 in Perl_call_sv () from /usr/lib/libperl.so.5.8 #50 0x00002aaaab70d285 in PerlIOEncode_flush () from /usr/lib/perl/5.8/auto/PerlIO/encoding/encoding.so #51 0x00002aaaaacbab5f in Perl_PerlIO_flush () from /usr/lib/libperl.so.5.8 #52 0x00002aaaaacbf0ed in PerlIOBuf_write () from /usr/lib/libperl.so.5.8 #53 0x00002aaaaac40d1e in Perl_write_to_stderr () from /usr/lib/libperl.so.5.8 #54 0x00002aaaaac41baf in Perl_vwarn () from /usr/lib/libperl.so.5.8 #55 0x00002aaaaac41fd3 in Perl_vwarner () from /usr/lib/libperl.so.5.8 #56 0x00002aaaaac42183 in Perl_warner () from /usr/lib/libperl.so.5.8 #57 0x00002aaaab8125cd in call_failure () from /usr/lib/perl/5.8/auto/Encode/Encode.so #58 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so And this goes on for THOUSANDS of lines. It ends LOOOONG way down by: #66106 0x00002aaaab813a27 in XS_Encode__XS_encode () from /usr/lib/perl/5.8/auto/Encode/Encode.so #66107 0x00002aaaaac59625 in Perl_pp_entersub () from /usr/lib/libperl.so.5.8 #66108 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #66109 0x00002aaaaabf90c8 in Perl_call_sv () from /usr/lib/libperl.so.5.8 #66110 0x00002aaaab70d285 in PerlIOEncode_flush () from /usr/lib/perl/5.8/auto/PerlIO/encoding/encoding.so #66111 0x00002aaaaacbab5f in Perl_PerlIO_flush () from /usr/lib/libperl.so.5.8 #66112 0x00002aaaaacbf073 in PerlIOBuf_write () from /usr/lib/libperl.so.5.8 #66113 0x00002aaaaaca2b4f in Perl_do_print () from /usr/lib/libperl.so.5.8 #66114 0x00002aaaaac534c8 in Perl_pp_print () from /usr/lib/libperl.so.5.8 #66115 0x00002aaaaac51b0e in Perl_runops_standard () from /usr/lib/libperl.so.5.8 #66116 0x00002aaaaabf9dbb in perl_run () from /usr/lib/libperl.so.5.8 #66117 0x000000000040180c in main () Feel free to ask for more information. Regards, Jan Hudec <[EMAIL PROTECTED]> [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- Site configuration information for perl v5.8.7: Configured by Debian Project at Tue Sep 13 02:36:46 CEST 2005. Summary of my perl5 (revision 5 version 8 subversion 7) configuration: Platform: osname=linux, osvers=2.6.12-1-amd64-k8, archname=x86_64-linux-gnu-thread-multi uname='linux athlon.lowpingbastards.de 2.6.12-1-amd64-k8 #1 sun jul 17 15:04:25 cest 2005 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-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.7 -Dsitearch=/usr/local/lib/perl/5.8.7 -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.7 -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=define use64bitall=define 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.0.2 20050821 (prerelease) (Debian 4.0.1-6)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, 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.5.so, so=so, useshrplib=true, libperl=libperl.so.5.8.7 gnulibc_version='2.3.5' 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.7: /home/bulb/lib/perl/5.8.7 /home/bulb/share/perl/5.8.7 /etc/perl /usr/local/lib/perl/5.8.7 /usr/local/share/perl/5.8.7 /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.7: HOME=/home/bulb LANG (unset) LANGUAGE=en_GB:en_US:en:cs_CZ LC_CTYPE=cs_CZ.UTF-8 LC_TIME=cs_CZ.UTF-8 LD_LIBRARY_PATH=/home/bulb/lib/ LOGDIR (unset) PATH=/home/bulb/bin:/home/bulb/shellstuff//bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games PERL5LIB=/home/bulb/lib/perl/5.8.7:/home/bulb/share/perl/5.8.7 PERL_BADLANG (unset) SHELL=/bin/zsh-beta