On Mon Jan 20 05:22:40 2014, RIBASUSHI wrote:
Show quoted text> Attached is an xzip of a dump made on a stock non-threaded 5.18.0 (no
> -D args), all latest deps. Loading it results in: Can't bless non-
> reference value at
> /home/rabbit/perl5/perlbrew/perls/5.16.2/lib/site_perl/5.16.2/x86_64-
> linux-thread-multi-ld/Devel/MAT/SV.pm line 1234.
Ah yes. Curious.
This is a padlist that contains undefs in some of the pad slots. Fixing the actual bug and putting a warning in yields:
UNDEF PAD IN CODE(PP) at 0x318e110
UNDEF PAD IN CODE(PP) at 0x31a8ae8
UNDEF PAD IN CODE(PP,C) at 0x385cb30
UNDEF PAD IN CODE(PP) at 0x31a8ba8
UNDEF PAD IN CODE(PP) at 0x15aa398
Looking at one of those in more detail:
$ perl -Mblib bin/pmat-show-sv 0x3f58eb0.mat 0x31a8ba8
UNDEF PAD IN CODE(PP) at 0x15aa398
UNDEF PAD IN CODE(PP) at 0x31a8ba8
UNDEF PAD IN CODE(PP,C) at 0x385cb30
UNDEF PAD IN CODE(PP) at 0x31a8ae8
UNDEF PAD IN CODE(PP) at 0x318e110
CODE(PP) at 0x31a8ba8 with refcount 1
name=&Storable::_freeze
stash=STASH(62) at 0x1825728
glob=GLOB(&*) at 0x31a8a58
location=/home/rabbit/perl5/perlbrew/perls/5.18.0_nt/lib/5.18.0/x86_64-linux/Storable.pm line 332
scope=CODE() at 0x3016c70
no padlist
padnames=PADNAMES(11) at 0x31a8bd8
pad[0]=PAD(11) at 0x31a8bc0
pad[1]=PAD(11) at 0x24642b0
pad[2]=PAD(11) at 0x2463e18
pad[3]=PAD(11) at 0x31f08e0
pad[4]=PAD(11) at 0x31f0dd8
pad[5]=PAD(11) at 0x31f1670
Referenced globs:
GLOB(&*) at 0x315a548, GLOB(@I) at 0xe10f20, GLOB(&*) at 0x315a548, GLOB($%*) at 0xe10f50, GLOB($%*) at 0xe10f50, GLOB($%*) at 0xe10f50, GLOB(&*) at 0x315a548, GLOB($%*) at 0xe10f50
I suspect this may just be a simple case that the padlist was longer, but invocations have now returned and these are still being dumped. Hmm.
Easily fixed.
--
Paul Evans