-1

I am building the Proc::ProcessTable with perl of 5.16.1

make's output:

Skip blib/lib/Proc/ProcessTable.pm (unchanged)
Skip blib/lib/Proc/Killall.pm (unchanged)
Skip blib/lib/Proc/example.pl (unchanged)
Skip blib/lib/Proc/Killfam.pm (unchanged)
gmake[1]: Entering directory `/jxu/tmp/Proc-ProcessTable-0.45/Process'
Skip ../blib/lib/Proc/ProcessTable/Process.pm (unchanged)
Manifying ../blib/man3/Proc::ProcessTable::Process.3
gmake[1]: Leaving directory `/jxu/tmp/Proc-ProcessTable-0.45/Process'
gcc -c    -D_REENTRANT -fno-strict-aliasing -pipe  -DPERL_USE_SAFE_PUTENV -O    -DVERSION=\"0.45\"  -DXS_VERSION=\"0.45\" -fPIC "-I/opt/VRTSperl/lib/5.16.1/i86pc-solaris-thread-multi/CORE"  -DPROC_FS ProcessTable.c
gcc -c    -D_REENTRANT -fno-strict-aliasing -pipe  -DPERL_USE_SAFE_PUTENV -O    -DVERSION=\"0.45\"  -DXS_VERSION=\"0.45\" -fPIC "-I/opt/VRTSperl/lib/5.16.1/i86pc-solaris-thread-multi/CORE"  -DPROC_FS OS.c
Running Mkbootstrap for Proc::ProcessTable ()
chmod 644 ProcessTable.bs
rm -f blib/arch/auto/Proc/ProcessTable/ProcessTable.so
gcc  -G -L/usr/local/lib OS.o  ProcessTable.o  -o blib/arch/auto/Proc/ProcessTable/ProcessTable.so      \
        \

chmod 755 blib/arch/auto/Proc/ProcessTable/ProcessTable.so
cp ProcessTable.bs blib/arch/auto/Proc/ProcessTable/ProcessTable.bs
chmod 644 blib/arch/auto/Proc/ProcessTable/ProcessTable.bs
Manifying blib/man3/Proc::Killall.3
Manifying blib/man3/Proc::ProcessTable.3
Manifying blib/man3/Proc::Killfam.3

It seems ok.

make test's output:

gmake[1]: Entering directory `/jxu/tmp/Proc-ProcessTable-0.45/Process'
gmake[1]: Leaving directory `/jxu/tmp/Proc-ProcessTable-0.45/Process'
PERL_DL_NONLAZY=1 /opt/VRTSperl/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/process.t .. Not a CODE reference at /opt/VRTSperl/lib/5.16.1/i86pc-solaris-thread-multi/DynaLoader.pm line 213.
END failed--call queue aborted at /jxu/tmp/Proc-ProcessTable-0.45/blib/lib/Proc/ProcessTable.pm line 213.
Compilation failed in require at t/process.t line 9.
BEGIN failed--compilation aborted at t/process.t line 9.
t/process.t .. Dubious, test returned 2 (wstat 512, 0x200)
Failed 3/3 subtests 

Test Summary Report
-------------------
t/process.t (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: Bad plan.  You planned 3 tests but ran 0.
Files=1, Tests=0,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.04 cusr  0.00 csys =  0.08 CPU)
Result: FAIL
Failed 1/1 test programs. 0/0 subtests failed.
*** Error code 2
make: Fatal error: Command failed for target `test_dynamic'

Thank you !

ikegami
  • 367,544
  • 15
  • 269
  • 518

1 Answers1

0

This is not a full answer.

The error is "Not a CODE reference" reported at DynaLoader.pm line 213:

  boot:
    my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);

    # See comment block above

    push(@dl_shared_objects, $file); # record files loaded

    &$xs(@args);   # <- line 213

This means whatever was returned by dl_install_xsub is not a coderef. More specifically, it can't be undef, a number, or a string because those would result in different error messages. Therefore $xs contains some other type of reference at that point.

dl_install_xsub (part of DynaLoader) is a thin wrapper around newXS_flags (part of perl). newXS_flags returns a CV * (perl type: pointer to "code value"). And at this point I'm stumped because I have no idea how this could possibly result in a non-coderef.

Possible avenues for further investigation: Use the perl debugger to put a breakpoint in DynaLoader.pm line 213 and check what's actually in $xs, then work backwards.

melpomene
  • 84,125
  • 8
  • 85
  • 148