Front page | perl.perl5.porters |
Postings from April 2010
[perl #74170] Data::Dumper -- dumping large hash returns empty string, segfaults perl
Thread Next
From:
sitaramc @ gmail . com
Date:
April 9, 2010 07:13
Subject:
[perl #74170] Data::Dumper -- dumping large hash returns empty string, segfaults perl
Message ID:
rt-3.6.HEAD-6227-1270807446-991.74170-75-0@perl.org
# New Ticket Created by sitaramc@gmail.com
# Please include the string: [perl #74170]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=74170 >
This is a bug report for perl from sitaramc@gmail.com,
generated with the help of perlbug 1.36 running under perl 5.10.0.
-----------------------------------------------------------------
[Please enter your report here]
I'm the author of a little tool called "gitolite" which is basically an access
control wrapper around git.
The basic mode of operation of gitolite is that whenever the ACL rules change,
we "compile" them into a hash that gets Data::Dumper-ed. [More details
available on request].
This dumping seems to fail if the hash is too large and you have a custom sort
sub. One work around seems to be a very unusual piece of code, that actually
does nothing meaningful but does seem to make the Dumper work!
for my $key (sort keys %repos) {
my @wtf = sort keys %{ $repos{$key} };
}
Finally, this seems to happen only when the program builds up the hash step by
step; if you load the hash in one shot it doesn't happen! Of course in my
application this is not a useful option (I have to build the hash as I parse
the ACL rules line by line!)
http://github.com/sitaramc/gitolite/raw/temp-br--data-dumper-problem-demo/data-dumper-returns-undef.pl
is a completely standalone program I wrote (based on recording the actual
sequence of operations that a real run takes) to demonstrate the problem. The
top 20 or so lines tell you what it's all about.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=low
---
This perlbug was built using Perl 5.10.0 in the Fedora build system.
It is being executed now by Perl 5.10.0 - Thu Oct 23 11:13:18 EDT 2008.
Site configuration information for perl 5.10.0:
Configured by Red Hat, Inc. at Thu Oct 23 11:13:18 EDT 2008.
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=linux, osvers=2.6.18-92.1.10.el5, archname=i386-linux-thread-multi
uname='linux x86-4.fedora.phx.redhat.com 2.6.18-92.1.10.el5 #1 smp wed jul 23 03:56:11 edt 2008 i686 i686 i386 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DPERL_USE_SAFE_PUTENV -Dversion=5.10.0 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dprivlib=/usr/lib/perl5/5.10.0 -Dsitelib=/usr/local/lib/perl5/site_perl/5.10.0 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.10.0 -Darchlib=/usr/lib/perl5/5.10.0/i386-linux-thread-multi -Dsitearch=/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi -Dvendorarch=/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi -Darchname=i386-linux-thread-multi -Dotherlibdirs=/usr/local/lib/perl5/site_perl:/usr/lib/perl5/site_perl -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinst!
allusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin'
hint=recommended, useposix=true, d_sigaction=define
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='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DPERL_USE_SAFE_PUTENV',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='4.3.0 20080428 (Red Hat 4.3.0-8)', 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='gcc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.8.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.8'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DPERL_USE_SAFE_PUTENV -L/usr/local/lib'
Locally applied patches:
---
@INC for perl 5.10.0:
/usr/lib/perl5/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/5.10.0
/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0
/usr/lib/perl5/vendor_perl
/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/local/lib/perl5/site_perl
/usr/lib/perl5/site_perl
.
---
Environment for perl 5.10.0:
HOME=/home/sitaram
LANG=en_US.UTF-8
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/sitaram/._s/bin:/home/sitaram/bin:/home/sitaram/._s/bin
PERL_BADLANG (unset)
SHELL=/bin/bash
Thread Next
-
[perl #74170] Data::Dumper -- dumping large hash returns empty string, segfaults perl
by sitaramc @ gmail . com