Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Undefined symbol: PL_no_modify #1

Open
yungchunglin opened this issue Dec 16, 2011 · 3 comments
Open

Undefined symbol: PL_no_modify #1

yungchunglin opened this issue Dec 16, 2011 · 3 comments

Comments

@yungchunglin
Copy link

I cloned the master. It has some glitches so I changed the variable names etc. to make it run.

However I got this error.

Can't load '/usr/lib/perl/5.10/auto/PerlIO/scalar/scalar.so' for module PerlIO::scalar: /usr/lib/perl/5.10/auto/PerlIO/scalar/scalar.so: undefined symbol: PL_no_modify at /usr/lib/perl/5.10/XSLoader.pm line 70.

I think it is caused by override_stdhandle and restore_stdhandle. Somehow, the .so file doesn't load.
As long as I comment out

    this->override_stdhandle(my_perl, outsv, "STDOUT");
    this->override_stdhandle(my_perl, errsv, "STDERR");

and

    this->restore_stdhandle(my_perl, "STDOUT");
    this->restore_stdhandle(my_perl, "STDERR");

The binding can run.

Is there any way to solve this or any workaround?

Thanks.

@hideo55
Copy link
Owner

hideo55 commented Dec 16, 2011

I couldn't reproduce this issue.
Is there the code that reproduce this?

@yungchunglin
Copy link
Author

Hi.

I forked your repo to here https://github.com/yungchunglin/node-perl

Here is my sample js code.

var perl = require('./node_modules/node-perl/build/Release/perl.node').Perl();
perl.Run({
    opts : ["-Mfeature=say","-e","say 'Hello world'"]
}, function(out,err){
    console.log(out);
});

My node.js is 0.6.6

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:

Platform:
osname=linux, osvers=2.6.24-28-server, archname=i486-linux-gnu-thread-multi
uname='linux roseapple 2.6.24-28-server #1 smp wed aug 18 21:17:51 utc 2010 i686 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des'
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='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.4.3', 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='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib /usr/lib64
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.11.1.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1
gnulibc_version='2.11.1'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -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 USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Apr 22 2011 18:17:20
@inc:
/etc/perl
/usr/local/lib/perl/5.10.1
/usr/local/share/perl/5.10.1
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.10
/usr/share/perl/5.10
/usr/local/lib/site_perl
.

@yungchunglin
Copy link
Author

If I specify LD_PRELOAD=/usr/lib/libperl.so.5.10 in the environment, then it runs. Any way to get around this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants