in reply to Re^2: Perl Debug Build
in thread Perl Debug Build

Please run the following command to find out where the Scalar/Util.pm is being loaded from, and if the corresponding Util.so is found:

$ PERL_CORE=1 tusc ./perl ext/Storable/t/weak.t | grep Util

This must be run from the main build directory, where the perl binary is located.

The normal output from this - with a fully functioning Scalar::Util - would look like this:

stat64("./Scalar/Util.pmc", 0x7fffdf30) ............. ... ERR#2 ENOENT stat64("./Scalar/Util.pm", 0x7fffdeb0) .............. ... ERR#2 ENOENT stat64("../lib/Scalar/Util.pmc", 0x7fffdf30) ........ ... ERR#2 ENOENT stat64("../lib/Scalar/Util.pm", 0x7fffdeb0) ......... ... = 0 open("../lib/Scalar/Util.pm", O_RDONLY|0x800, 0666) . ... = 4 stat64("./List/Util.pmc", 0x7fffdf30) ............... ... ERR#2 ENOENT stat64("./List/Util.pm", 0x7fffdeb0) ................ ... ERR#2 ENOENT stat64("../lib/List/Util.pmc", 0x7fffdf30) .......... ... ERR#2 ENOENT stat64("../lib/List/Util.pm", 0x7fffdeb0) ........... ... = 0 open("../lib/List/Util.pm", O_RDONLY|0x800, 0666) ... ... = 4 stat64("../lib/auto/List/Util/Util.so", 0x40011090) . ... = 0 stat64("../lib/auto/List/Util/Util.bs", 0x40011090) . ... = 0 open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4 open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4

In case you don't get any output, make sure you can run the test itself (without tusc), i.e.

$ PERL_CORE=1 ./perl ext/Storable/t/weak.t

Alternatively, you could try to just load the module Scalar::Util and import weaken (output should be similar to above):

$ tusc ./perl -I./lib -MScalar::Util=weaken -e1 | grep Util

And if you find that you do have a Util.so, you might want to check whether it has been compiled properly (contains the required symbols):

$ nm ./lib/auto/List/Util/Util.so | grep weak + [77] | 0| 0|FUNC |GLOB |0| UNDEF|Perl_sv_rvweak +en [102] | 67145504| 384|FUNC |GLOB |0| .text|XS_Scalar__Uti +l_isweak [66] | 67145184| 288|FUNC |GLOB |0| .text|XS_Scalar__Uti +l_weaken

Also (just in case) you could check for other perls:

$ find /opt/perl* -path "*bin/perl" $ find /opt/perl* -path "*bin/perl" -exec {} -v \; | grep 'is perl'

...because at least the code from Perl's Configure, which populates @inc_version_list, apparently did find directories for versions from 5.8.0 all through to 5.8.7.  This doesn't necessarily mean that all those are full installations, but it's at least a hint that there are - or have been - other versions of Perl on that machine, which might interfere under some circumstances (like PERL5LIB being set)...