Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

undefined symbol: PL_stack_sp

891 views
Skip to first unread message

demerphq

unread,
Jul 14, 2014, 5:08:03 PM7/14/14
to inl...@perl.org
Hi,

I've been encountering the error in the subject line when I try to use Inline::C. 

For instance when I build the sample code from the Inline::C docs 

use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
  printf("Hello %s!\n", name);
}

I get the following error:

Had problems bootstrapping Inline module 'FOO_2bd2'

Can't load '/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so' for module FOO_2bd2: /git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
 at /usr/local/share/perl/5.14.2/Inline.pm line 526.


 at - line 0.
INIT failed--call queue aborted.

I have searched around and there are CPANTester reports of failure due to this. But I only see one solution, on stackoverflow, that it has to do with 32bit versus 64bit, but it doesnt say what to do to fix and I somehow doubt it is relevant here.

I did a complete rebuild and test of the latest Inline::C and all tests passed. So I am a bit confused what I am doing wrong.

My perl version is:

This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi

Complete -V output available on request.

Any ideas on what to do to fix this?

cheers.
Yves

--
perl -Mre=debug -e "/just|another|perl|hacker/"

demerphq

unread,
Jul 17, 2014, 2:45:31 AM7/17/14
to inl...@perl.org
Ping?

Yves 

sisy...@optusnet.com.au

unread,
Jul 17, 2014, 4:06:18 AM7/17/14
to demerphq, inl...@perl.org

From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM

>> /git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
>> symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
>> at /usr/local/share/perl/5.14.2/Inline.pm line 526.

Looks to me that we've got two different perls getting involved here:
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2

I think that's likely to be the problem.
Did they both get involved during 'make test' ?

If additional help is required the OP (whose contact details seem to be
missing) should try running:

use Inline C => Config =>
BUILD_NOISY => 1,
FORCE_BUILD => 1;
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
printf ("Hello %s!\n", name);
}

With the full output of that, along with perl-V output, we might be able to
offer more complete advice.

Cheers,
Rob

demerphq

unread,
Jul 17, 2014, 5:07:36 AM7/17/14
to Sisyphus, inl...@perl.org
On 17 July 2014 10:06, <sisy...@optusnet.com.au> wrote:

From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM


/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
 at /usr/local/share/perl/5.14.2/Inline.pm line 526.

Looks to me that we've got two different perls getting involved here:
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2

I think that's likely to be the problem.

Thanks, ill dig on that.
 
Did they both get involved during 'make test' ?

Make test didnt show any build output. How can I enable that?
 
If additional help is required the OP (whose contact details seem to be missing)

I am the OP.:-)
 
should try running:

use Inline C => Config =>
 BUILD_NOISY => 1,
 FORCE_BUILD => 1;

use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
 printf ("Hello %s!\n", name);
}

With the full output of that, along with perl-V output, we might be able to offer more complete advice.

Here you go:

validate Stage
<-----------------------Information Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/perl/Porting/_Inline/build/FOO_1ef8

and I'll install the executable as:
/git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
  Starting "perl Makefile.PL" Stage
Generating a Unix-style Makefile
Writing Makefile for FOO_1ef8
Writing MYMETA.yml and MYMETA.json
  Finished "perl Makefile.PL" Stage

  Starting "make" Stage
Running Mkbootstrap for FOO_1ef8 ()
chmod 644 FOO_1ef8.bs
/usr/bin/perl /usr/share/perl/5.14/ExtUtils/xsubpp  -typemap "/usr/share/perl/5.14/ExtUtils/typemap"   FOO_1ef8.xs > FOO_1ef8.xsc && mv FOO_1ef8.xsc FOO_1ef8.c
cc -c  -I"/git_tree/perl/Porting" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I../../../.."   FOO_1ef8.c
rm -f blib/arch/auto/FOO_1ef8/FOO_1ef8.so
cc  -shared -L/usr/local/lib -fstack-protector FOO_1ef8.o  -o blib/arch/auto/FOO_1ef8/FOO_1ef8.so \
    \
 
chmod 755 blib/arch/auto/FOO_1ef8/FOO_1ef8.so
/usr/bin/perl -MExtUtils::Command::MM -e 'cp_nonempty' -- FOO_1ef8.bs blib/arch/auto/FOO_1ef8/FOO_1ef8.bs 644
  Finished "make" Stage

  Starting "make install" Stage
Running Mkbootstrap for FOO_1ef8 ()
chmod 644 FOO_1ef8.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
  Finished "make install" Stage

  Starting Cleaning Up Stage
  Finished Cleaning Up Stage

Finished Build Compile Stage

Had problems bootstrapping Inline module 'FOO_1ef8'

Can't load '/git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so' for module FOO_1ef8: /git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so: undefined symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
 at /usr/local/share/perl/5.14.2/Inline.pm line 526.


 at - line 0.
INIT failed--call queue aborted.
use Inline C => Config =>
 BUILD_NOISY => 1,
 FORCE_BUILD => 1;
use Inline qw(Info NoClean);
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__

void greet(char* name) {
  printf("Hello %s!\n", name);
}

$ perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
   
  Platform:
    osname=linux, osvers=3.2.0-37-generic, archname=x86_64-linux-gnu-thread-multi
    uname='linux lamiak 3.2.0-37-generic #58-ubuntu smp thu jan 24 15:28:10 utc 2013 x86_64 x86_64 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions -Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.14.2 -Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.14.2 -des'
    hint=recommended, useposix=true, d_sigaction=define
    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 -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.7.3', 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 =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
    gnulibc_version='2.17'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                        PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT
                        USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API
  Locally applied patches:
DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
DEBPKG:fixes/respect_umask - Respect umask during installation
DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of libperl.a to /usr/lib
DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/517938 http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/580034 Point users to Debian packages of deprecated core modules
DEBPKG:fixes/hurd-ccflags - [a190e64] http://bugs.debian.org/587901 [perl #92244] Make hints/gnu.sh append to $ccflags rather than overriding them
DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
DEBPKG:fixes/extutils-cbuilder-cflags - [011e8fb] http://bugs.debian.org/624460 [perl #89478] Append CFLAGS and LDFLAGS to their Config.pm counterparts in EU::CBuilder
DEBPKG:fixes/module-build-home-directory - http://bugs.debian.org/624850 [rt.cpan.org #67893] Fix failing tilde test when run under a UID without a passwd entry
DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.14.2-21 in patchlevel.h
DEBPKG:fixes/h2ph-multiarch - [e7ec705] http://bugs.debian.org/625808 [perl #90122] Make h2ph correctly search gcc include directories
DEBPKG:fixes/index-tainting - [3b36395] http://bugs.debian.org/291450 [perl #64804] RT 64804: tainting with index() of a constant
DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
DEBPKG:fixes/sys-syslog-socket-timeout-kfreebsd.patch - http://bugs.debian.org/627821 [rt.cpan.org #69997] Use a socket timeout on GNU/kFreeBSD to catch ICMP port unreachable messages
DEBPKG:fixes/hurd-hints - http://bugs.debian.org/636609 Improve general GNU hints, needed for GNU/Hurd.
DEBPKG:fixes/pod_fixes - [7698aed] http://bugs.debian.org/637816 Fix typos in several pod/perl*.pod files
DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
DEBPKG:fixes/digest_eval_hole - http://bugs.debian.org/644108 Close the eval "require $module" security hole in Digest->new($algorithm)
DEBPKG:fixes/hurd-ndbm - [f0d0a20] [perl #102680] http://bugs.debian.org/645989 Add GNU/Hurd hints for NDBM_File
DEBPKG:fixes/sysconf.t-posix - [8040185] [perl #102888] http://bugs.debian.org/646016 Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd
DEBPKG:fixes/hurd-largefile - [1fda587] [perl #103014] http://bugs.debian.org/645790 enable LFS on GNU/Hurd
DEBPKG:debian/hurd_test_todo_syslog - http://bugs.debian.org/650093 Disable failing GNU/Hurd tests in cpan/Sys-Syslog/t/syslog.t
DEBPKG:fixes/hurd_skip_itimer_virtual - [rt.cpan.org #72754] http://bugs.debian.org/650094 Skip interval timer tests in Time::HiRes on GNU/Hurd
DEBPKG:debian/hurd_test_skip_sigdispatch - http://bugs.debian.org/650188 Disable failing GNU/Hurd tests op/sigdispatch.t
DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175 Disable failing GNU/Hurd tests dist/threads/t/stack.t
DEBPKG:debian/hurd_test_skip_pipe - http://bugs.debian.org/650187 Disable failing GNU/Hurd tests io/pipe.t
DEBPKG:debian/hurd_test_skip_io_pipe - http://bugs.debian.org/650096 Disable failing GNU/Hurd tests dist/IO/t/io_pipe.t
DEBPKG:fixes/manpage_name_CPAN - http://bugs.debian.org/650448 [rt.cpan.org #73396] cpan/CPAN: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_CPANPLUS - http://bugs.debian.org/650450 [rt.cpan.org #73398] cpan/CPANPLUS: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Term-UI - http://bugs.debian.org/650452 [rt.cpan.org #73400] cpan/Term-UI: add NAME headings in modules with POD
DEBPKG:fixes/podlators_ae_ligature_fallback - http://bugs.debian.org/652851 Fix the ASCII fallback string for AE
DEBPKG:fixes/fsf_postal_address - [de89470] Update references to the FSF's postal address
DEBPKG:fixes/cpan_module_pod_fixes - [perl #106870] [rt.cpan.org #73447] [rt.cpan.org #73446] Fix POD formatting in Term-Cap and Pod-Parser
DEBPKG:fixes/cgi_no_shellwords_pl - Use Text::ParseWords instead of shellwords.pl
DEBPKG:fixes/path_max_fallback - [perl #109262] http://bugs.debian.org/656869 Don't use _POSIX_PATH_MAX as a fallback PATH_MAX
DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [rt.cpan.org #28632] Make EU::MM pass LD through to recursive Makefile.PL invocations
DEBPKG:fixes/propagate_tainted_errors.patch - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=663158 [perl #111654] properly propagate tainted errors
DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
DEBPKG:fixes/socket_cache_propagate - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659075 [rt.cpan.org #61577] [perl #112736] sockdomain and socktype undef on newly accepted sockets
DEBPKG:fixes/ipc_open3 - [perl #114454] http://bugs.debian.org/683894 IPC::Open3::open3(..., '-') broken
DEBPKG:fixes/string_repeat_overrun - http://bugs.debian.org/689314 [b675304] avoid calling memset with a negative count
DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
DEBPKG:fixes/kfreebsd-overrides - http://bugs.debian.org/689713 [perl #115324] [7dc6565] Remove unnecessary overrides in gnukfreebsd and gnuknetbsd hints.
DEBPKG:fixes/tainted-smartmatch - [be88a5c] http://bugs.debian.org/690571 [perl #93590] $tainted ~~ [...] failing
DEBPKG:fixes/regexp-matching-starter - [6e634c5] http://bugs.debian.org/690975 [perl #101710] Regression with /i, latin1 chars.
DEBPKG:fixes/regexp-matching-fold - [399fb9c] http://bugs.debian.org/690976 regexec.c: Fix "\x{FB01}\x{FB00}" =~ /ff/i
DEBPKG:fixes/regexp-matching-opposite-case - [dc91d5a] http://bugs.debian.org/690979 [perl #101970] /[[:lower:]]/i matches upper case
DEBPKG:fixes/reading-glob-copy-handle - [fd1564b] http://bugs.debian.org/629363 [perl #92258] <$fh> hangs on a glob copy
DEBPKG:fixes/smartmatch-rhs-precedence - http://bugs.debian.org/691102 [011be0b] Enforce Any ~~ Object smartmatch precedence
DEBPKG:fixes/perlcheat-update - http://bugs.debian.org/691112 [ab0ae0a] Update PerlCheat to 5.14
DEBPKG:fixes/cgi-cr-escaping - http://bugs.debian.org/693420 CR escaping for P3P and Set-Cookie headers
DEBPKG:fixes/maketext-code-execution - [1735f6f] http://bugs.debian.org/695224 Fix misparsing of maketext strings.
DEBPKG:fixes/storable-security-warning - [664f237] http://bugs.debian.org/695223 add a note about security concerns in Storable
DEBPKG:fixes/digest-sha-doublefree - [rt.cpan.org #82655] http://bugs.debian.org/698172 [a8c6ff7] Fix a double-free bug in Digest::SHA
DEBPKG:fixes/64bitint-signedness-wraparound - http://bugs.debian.org/698320 [94e529c] Avoid wraparound when casting unsigned size_t to signed ssize_t.
DEBPKG:fixes/stdin-sigchld - http://bugs.debian.org/700171 [perl #116621] [be48bbe] add a couple missing LEAVEs in perlio_async_run()
DEBPKG:fixes/hsplit-rehash - [d59e31f] http://bugs.debian.org/702296 Prevent premature hsplit() calls, and only trigger REHASH after hsplit()
DEBPKG:fixes/encode-memleak - http://bugs.debian.org/702416 [5814803] Encode: Fixed a memory leak that occurred in the UTF-8 encoding.
  Built under linux
  Compiled at Apr 15 2013 15:36:20
  %ENV:
    PERLBREW_BASHRC_VERSION="0.67"
    PERLBREW_CONFIGURE_FLAGS="-de -Dcc=ccache\ gcc -Dld=gcc"
    PERLBREW_HOME="/home/yorton/.perlbrew"
    PERLBREW_MANPATH=""
    PERLBREW_PATH="/home/yorton/perl5/perlbrew/bin"
    PERLBREW_ROOT="/home/yorton/perl5/perlbrew"
    PERLBREW_VERSION="0.67"
  @INC:
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl
 

demerphq

unread,
Jul 17, 2014, 5:25:50 AM7/17/14
to Sisyphus, inl...@perl.org
On 17 July 2014 11:07, demerphq <deme...@gmail.com> wrote:
On 17 July 2014 10:06, <sisy...@optusnet.com.au> wrote:

From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM


/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
 at /usr/local/share/perl/5.14.2/Inline.pm line 526.

Looks to me that we've got two different perls getting involved here:
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2

I think that's likely to be the problem.

Thanks, ill dig on that.


My laptop system perl seems to have a confused state. In hindsight hardly surprising.
 
I used perlbrew to switch to a different perl, and now I can get it to build.

One side issue of the perlbrew version was that I had (for no good reason) put the files I wanted to compile in the Porting directory of a perl.git checkout. This then confused makemaker. When I moved the scripts out of a perl build tree it started behaving properly. IMO that issue can be left at "so dont do that". :-)

The original issue however might be handled more gracefully. A message from Inline saying "it looks like your perl install is b0rked" would have be useful.

Anyway, thanks for your help!

cheers,
Yves

sisy...@optusnet.com.au

unread,
Jul 17, 2014, 8:22:23 AM7/17/14
to demerphq, inl...@perl.org

From: demerphq
Sent: Thursday, July 17, 2014 7:25 PM
To: Sisyphus
Cc: inl...@perl.org

> When I moved the scripts out of a perl build tree it started behaving
> properly. IMO that issue can be left at "so dont do that". :-)

AFAICT, the only difference between building in /git_tree/perl/Porting and
/somewhere/else is that instead of doing:

cc -c -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
the build will do:
cc -c -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c

All other commands that get run would be the same. (You could check this by
comparing the BUILD_NOISY outputs for both situations.)

So I'm wondering whether, in the running of the above command, something was
found in "/git_tree/perl/Porting" that really ought not have been found and
loaded.

Cheers,
Rob

demerphq

unread,
Jul 17, 2014, 5:24:53 PM7/17/14
to Sisyphus, inl...@perl.org
Below is output from it failing and it suceeding (this is perlbrew 5.14.4):

~/git_tree/perl/Porting$ perl test_inline.pl 
validate Stage
<-----------------------Information Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2

and I'll install the executable as:
/git_tree/perl/Porting/_Inline/lib/auto/test_inline_pl_21ea2/test_inline_pl_21ea2.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
  Starting "perl Makefile.PL" Stage
Writing Makefile for test_inline_pl_21ea2
Writing MYMETA.yml
  Finished "perl Makefile.PL" Stage

  Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp  -typemap "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"   test_inline_pl_21ea2.xs > test_inline_pl_21ea2.xsc && mv test_inline_pl_21ea2.xsc test_inline_pl_21ea2.c
make: *** No rule to make target `../../../../fakethr.h', needed by `test_inline_pl_21ea2.o'. Stop.

A problem was encountered while attempting to compile and install your Inline
C code. The command that failed was:
  "make" with error code 2

The build directory was:
/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2

To debug the problem, cd to the build directory, and inspect the output files.

 at test_inline.pl line 0.
...propagated at /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/Inline/C.pm line 834.
INIT failed--call queue aborted.

#########################################################################################

If I build outside of my perl git checkout:

#########################################################################################

~/git_tree/hashy$ perl test_inline.pl 
validate Stage
<-----------------------Information Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/hashy/_Inline/build/test_inline_pl_21ea

and I'll install the executable as:
/git_tree/hashy/_Inline/lib/auto/test_inline_pl_21ea/test_inline_pl_21ea.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
  Starting "perl Makefile.PL" Stage
Writing Makefile for test_inline_pl_21ea
Writing MYMETA.yml
  Finished "perl Makefile.PL" Stage

  Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp  -typemap "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"   test_inline_pl_21ea.xs > test_inline_pl_21ea.xsc && mv test_inline_pl_21ea.xsc test_inline_pl_21ea.c
cc -c  -I"/git_tree/hashy" -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux/CORE"   test_inline_pl_21ea.c
Running Mkbootstrap for test_inline_pl_21ea ()
rm -f blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so
cc  -shared -O2 -L/usr/local/lib -fstack-protector test_inline_pl_21ea.o  -o blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so \
    \
 
chmod 755 blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so
cp test_inline_pl_21ea.bs blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.bs
chmod 644 blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.bs
  Finished "make" Stage

  Starting "make install" Stage
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
  Finished "make install" Stage

  Starting Cleaning Up Stage
  Finished Cleaning Up Stage

Finished Build Compile Stage

Hello Ingy!
Hello 42!

demerphq

unread,
Jul 17, 2014, 5:40:00 PM7/17/14
to Sisyphus, inl...@perl.org
On 17 July 2014 23:24, demerphq <deme...@gmail.com> wrote:
On 17 July 2014 14:22, <sisy...@optusnet.com.au> wrote:

From: demerphq
Sent: Thursday, July 17, 2014 7:25 PM
To: Sisyphus
Cc: inl...@perl.org


When I moved the scripts out of a perl build tree it started behaving properly. IMO that issue can be left at "so dont do that". :-)

AFAICT, the only difference between building in /git_tree/perl/Porting and /somewhere/else is that instead of doing:

cc -c  -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
the build will do:
cc -c  -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c

All other commands that get run would be the same. (You could check this by comparing the BUILD_NOISY outputs for both situations.)

So I'm wondering whether, in the running of the above command, something was found in "/git_tree/perl/Porting" that really ought not have been found and loaded.
 
Below is output from it failing and it suceeding (this is perlbrew 5.14.4):

  Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp  -typemap "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"   test_inline_pl_21ea2.xs > test_inline_pl_21ea2.xsc && mv test_inline_pl_21ea2.xsc test_inline_pl_21ea2.c
make: *** No rule to make target `../../../../fakethr.h', needed by `test_inline_pl_21ea2.o'. Stop.


The above shows what goes wrong. Makemaker decides that PERL_LIB is "../../../../" instead of "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"

below is the diff of the two Makefiles, but the relevant part is as follows:

-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib

I am guessing that MakerMaker decides that is being used as part of building perl, and that it should use it as the location for its header files. I know there is special logic in MakeMaker for this kind of purpose. In fact I have patched related logic in the perl build process. If this were happening in a later perl I might even think this was my fault. :-) 

Anyway, my bet is this isnt an Inline bug, but an unfortunate mis-feature in MakeMaker.

$ diff -wu ~/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile ~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile
--- /home/yorton/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile 2014-07-17 23:21:20.113236687 +0200
+++ ~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile 2014-07-17 23:19:52.913732019 +0200
@@ -1,4 +1,4 @@
-# This Makefile is for the test_inline_pl_21ea extension to perl.
+# This Makefile is for the test_inline_pl_21ea2 extension to perl.
 #
 # It was generated automatically by MakeMaker version
 # 6.57_05 (Revision: 65705) from the contents of
@@ -12,8 +12,8 @@
 #   MakeMaker Parameters:
 
 #     BUILD_REQUIRES => {  }
-#     INC => q[-I"/git_tree/hashy"]
-#     NAME => q[test_inline_pl_21ea]
+#     INC => q[-I"/git_tree/perl/Porting"]
+#     NAME => q[test_inline_pl_21ea2]
 #     PREREQ_PM => {  }
 #     TYPEMAPS => [q[/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap]]
 #     VERSION => q[0.00]
@@ -53,8 +53,8 @@
 AR_STATIC_ARGS = cr
 DIRFILESEP = /
 DFSEP = $(DIRFILESEP)
-NAME = test_inline_pl_21ea
-NAME_SYM = test_inline_pl_21ea
+NAME = test_inline_pl_21ea2
+NAME_SYM = test_inline_pl_21ea2
 VERSION = 0.00
 VERSION_MACRO = VERSION
 VERSION_SYM = 0_00
@@ -78,13 +78,13 @@
 VENDORPREFIX = 
 INSTALLPRIVLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
 DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
-INSTALLSITELIB = /git_tree/hashy/_Inline/lib
+INSTALLSITELIB = /git_tree/perl/Porting/_Inline/lib
 DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
 INSTALLVENDORLIB = 
 DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
 INSTALLARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
 DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
-INSTALLSITEARCH = /git_tree/hashy/_Inline/lib
+INSTALLSITEARCH = /git_tree/perl/Porting/_Inline/lib
 DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
 INSTALLVENDORARCH = 
 DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@@ -112,14 +112,15 @@
 DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
 INSTALLVENDORMAN3DIR = 
 DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
 LIBPERL_A = libperl.a
 FIRST_MAKEFILE = Makefile
 MAKEFILE_OLD = Makefile.old
 MAKE_APERL_FILE = Makefile.aperl
 PERLMAINCC = $(CC)
-PERL_INC = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux/CORE
+PERL_SRC = ../../../..
+PERL_INC = ../../../..
 PERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
 FULLPERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
 ABSPERL = $(PERL)
@@ -143,21 +144,21 @@
 # PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
 # DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
 MAKE = make
-FULLEXT = test_inline_pl_21ea
-BASEEXT = test_inline_pl_21ea
+FULLEXT = test_inline_pl_21ea2
+BASEEXT = test_inline_pl_21ea2
 PARENT_NAME = 
 DLBASE = $(BASEEXT)
 VERSION_FROM = 
-INC = -I"/git_tree/hashy"
+INC = -I"/git_tree/perl/Porting"
 OBJECT = $(BASEEXT)$(OBJ_EXT)
 LDFROM = $(OBJECT)
 LINKTYPE = dynamic
 BOOTDEP = 
 
 # Handy lists of source code files:
-XS_FILES = test_inline_pl_21ea.xs
-C_FILES  = test_inline_pl_21ea.c
-O_FILES  = test_inline_pl_21ea.o
+XS_FILES = test_inline_pl_21ea2.xs
+C_FILES  = test_inline_pl_21ea2.c
+O_FILES  = test_inline_pl_21ea2.o
 H_FILES  = INLINE.h
 MAN1PODS = 
 MAN3PODS = 
@@ -204,7 +205,7 @@
 XSUBPP = $(XSUBPPDIR)$(DFSEP)xsubpp
 XSUBPPRUN = $(PERLRUN) $(XSUBPP)
 XSPROTOARG = 
-XSUBPPDEPS = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap $(XSUBPP)
+XSUBPPDEPS = ../../../../lib/ExtUtils/typemap /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap $(XSUBPP)
 XSUBPPARGS = -typemap "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap" 
 XSUBPP_EXTRA_ARGS = 
 
@@ -260,8 +261,8 @@
 RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
 DIST_CP = best
 DIST_DEFAULT = tardist
-DISTNAME = test_inline_pl_21ea
-DISTVNAME = test_inline_pl_21ea-0.00
+DISTNAME = test_inline_pl_21ea2
+DISTVNAME = test_inline_pl_21ea2-0.00
 
 
 # --- MakeMaker macro section:
@@ -280,7 +281,7 @@
 
 # --- MakeMaker const_loadlibs section:
 
-# test_inline_pl_21ea might depend on some other libraries:
+# test_inline_pl_21ea2 might depend on some other libraries:
 # See ExtUtils::Liblist for details
 #
 
@@ -527,14 +528,14 @@
   core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
   core.[0-9][0-9] $(BASEEXT).bso \
   pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
-  MYMETA.yml $(BASEEXT).x \
-  $(BOOTSTRAP) perl$(EXE_EXT) \
-  tmon.out *$(OBJ_EXT) \
-  pm_to_blib $(INST_ARCHAUTODIR)/extralibs.ld \
-  blibdirs.ts core.[0-9][0-9][0-9][0-9][0-9] \
-  *perl.core core.*perl.*.? \
-  $(MAKE_APERL_FILE) $(BASEEXT).def \
-  test_inline_pl_21ea.c perl \
+  test_inline_pl_21ea2.c MYMETA.yml \
+  $(BASEEXT).x $(BOOTSTRAP) \
+  perl$(EXE_EXT) tmon.out \
+  *$(OBJ_EXT) pm_to_blib \
+  $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+  core.*perl.*.? $(MAKE_APERL_FILE) \
+  $(BASEEXT).def perl \
   core.[0-9][0-9][0-9] mon.out \
   lib$(BASEEXT).def perlmain.c \
   perl.exe so_locations \
@@ -563,7 +564,7 @@
 metafile : create_distdir
  $(NOECHO) $(ECHO) Generating META.yml
  $(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
- $(NOECHO) $(ECHO) 'name:               test_inline_pl_21ea' >> META_new.yml
+ $(NOECHO) $(ECHO) 'name:               test_inline_pl_21ea2' >> META_new.yml
  $(NOECHO) $(ECHO) 'version:            0.00' >> META_new.yml
  $(NOECHO) $(ECHO) 'abstract:           ~' >> META_new.yml
  $(NOECHO) $(ECHO) 'author:  []' >> META_new.yml
@@ -806,6 +807,16 @@
 
 
 # --- MakeMaker perldepend section:
+# Check for unpropogated config.sh changes. Should never happen.
+# We do NOT just update config.h because that is not sufficient.
+# An out of date config.h is not fatal but complains loudly!
+$(PERL_INC)/config.h: $(PERL_SRC)/config.sh
+ -$(NOECHO) $(ECHO) "Warning: $(PERL_INC)/config.h out of date with $(PERL_SRC)/config.sh"; $(FALSE)
+
+$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
+ $(NOECHO) $(ECHO) "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date with $(PERL_SRC)/config.sh"
+ cd $(PERL_SRC) && $(MAKE) lib/Config.pm
+
 
 PERL_HDRS = \
  $(PERL_INC)/EXTERN.h \
@@ -851,7 +862,7 @@
 
 $(OBJECT) : $(PERL_HDRS)
 
-test_inline_pl_21ea.c : $(XSUBPPDEPS)
+test_inline_pl_21ea2.c : $(XSUBPPDEPS)
 
 
 # --- MakeMaker makefile section:

sisy...@optusnet.com.au

unread,
Jul 17, 2014, 8:58:47 PM7/17/14
to demerphq, inl...@perl.org

From: demerphq
Sent: Friday, July 18, 2014 7:40 AM

> The above shows what goes wrong. Makemaker decides that PERL_LIB is
> "../../../../" instead of
> "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"
>
> below is the diff of the two Makefiles, but the relevant part is as
> follows:
>
> -PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
> -PERL_ARCHLIB =
> /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
> +PERL_LIB = ../../../../lib
> +PERL_ARCHLIB = ../../../../lib
>
> I am guessing that MakerMaker decides that is being used as part of
> building perl, and that it should use it as the location for its header
> files. I know there is special logic in MakeMaker for this kind of
> purpose.

I didn't know that.
If we could get a handle on precisely how to detect that this problem might
arise, then we could probably have Inline issue a warning that "things might
go awry, and if they do then you should move the script to a different
(sane) location".

I tried running your demo script on Windows (as try.pl) in
C:/git_tree/perl/Porting with perl-5.14.0, EU-MM-6.62 and it still worked
fine for me.
Might there be a perlbrew component to this issue ? (I'm not at all familiar
with perlbrew. I just build my perls the old fashioned way and call them via
different shell/batch scripts.)

I see that you're running EU-MM-6.57_05. If you think it's worth the effort
I guess you could see if updating to EU-MM-6.62 fixes the problem - or do
any other digging you think might be productive. (It's actually a bit
interesting.)
Otherwise we can just settle for the "Don't do that" solution ;-)

Cheers,
Rob

sisy...@optusnet.com.au

unread,
Jul 18, 2014, 9:15:29 PM7/18/14
to Ingy dot Net, demerphq, inline
Yeah, I’ll do that tonight if it hasn’t already been done.
 
Cheers,
Rob
 
Sent: Saturday, July 19, 2014 2:28 AM
Subject: Re: undefined symbol: PL_stack_sp
Can someone turn this into an issue here https://github.com/ingydotnet/inline-c-pm/issues

This type of discussion would do better there, as we'll get around to addressing it.

Cheers

Ingy dot Net

unread,
Jul 18, 2014, 12:28:01 PM7/18/14
to Sisyphus, demerphq, inline
Can someone turn this into an issue here https://github.com/ingydotnet/inline-c-pm/issues

This type of discussion would do better there, as we'll get around to addressing it.

Cheers
On Thu, Jul 17, 2014 at 5:58 PM, <sisy...@optusnet.com.au> wrote:

sisy...@optusnet.com.au

unread,
Jul 19, 2014, 10:39:39 PM7/19/14
to Ingy dot Net, demerphq, inline

From: Ingy dot Net
Sent: Saturday, July 19, 2014 2:28 AM
Subject: Re: undefined symbol: PL_stack_sp

> Can someone turn this into an issue here
> https://github.com/ingydotnet/inline-c-pm/issues

Done.
Please direct follow-ups to:

https://github.com/ingydotnet/inline-c-pm/issues/12

Cheers,
Rob

0 new messages