undefined symbol: Perl_Istack_sp_ptr
Closed this issue · 12 comments
Hi,
I ran into the following problem:
> module load perl/5.22.1-foss-2016a
lorencm@cl2n075:/work/waterhouse_team/apps/mySyntenyPortal> which gcc
/pkg/suse12/software/gcccore/4.9.3/bin/gcc
lorencm@cl2n075:/work/waterhouse_team/apps/mySyntenyPortal> ./install.pl build
Compiling third party tools...
perl: symbol lookup error: /lustre/work-lustre/waterhouse_team/apps/mySyntenyPortal/src/lib/auto/Sort/Key/Key.so: undefined symbol: Perl_Istack_sp_ptr
Success!!
What did I miss?
Thank you in advance.
Michal
Hi,
If you have problems in PERL modules, remove the PERL libraries included in mySyntenyPortal packages and re-install the required perl modules.
You can see more information in this page (https://github.com/jkimlab/mySyntenyPortal#system-requirements).
Thank you,
Jongin
Thank you it worked.
Hi,
When I started to run mySyntenyPortal I got:
mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf
Building a website...
/usr/bin/perl: symbol lookup error: /home/lorencm/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Sort/Key/Key.so: undefined symbol: Perl_xs_handshake
Done.
What did I miss?
Thank you in advance.
Michal
Hi Michal,
Do you have more than one versions of PERL in your server?
I think that the problem is the different versions between executed PERL and installed module.
If it is right, it may work with the command below.
$ perl [mySyntenyPortal path]/mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf
Thank you,
Jongin
Hi Jongin,
Yes, on our cluster we have few different Perl versions installed and I am using the below commands to set up the Perl environment.
> module load perl/5.22.1-foss-2016a
> module load libgd
> PATH="/home/lorencm/perl5/bin${PATH:+:${PATH}}"; export PATH;
> PERL5LIB="/home/lorencm/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
> PERL_LOCAL_LIB_ROOT="/home/lorencm/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
> PERL_MB_OPT="--install_base \"/home/lorencm/perl5\""; export PERL_MB_OPT;
> PERL_MM_OPT="INSTALL_BASE=/home/lorencm/perl5"; export PERL_MM_OPT;
> perl /work/waterhouse_team/apps/mySyntenyPortal/mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf
Building a website...
/usr/bin/perl: symbol lookup error: /home/lorencm/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Sort/Key/Key.so: undefined symbol: Perl_xs_handshake
Done.
What did I miss?
Thank you in advance,
Michal
Hi Michal,
Then, I think that the problem is the first line of our Perl scripts (#!/usr/bin/perl).
Can you change the first line of all our Perl scripts from '#!/usr/bin/perl' to 'your Perl path' in [mySyntenyPortal path]/scripts directory?
I think it will be helpful.
Thank you,
Jongin
Hi Jongin,
I changed it to #!/usr/bin/env perl
and to #!/pkg/suse12/software/perl/5.22.1-foss-2016a/bin/perl
in both case I got Perl_xs_handshake
.
What did I miss?
Thank you in advance.
Michal
Hi Michal,
Then, can you try again to reinstall the Sort::Key module?
If you have the same problem, it is better to discuss with your server administrator.
Thank you,
Jongin
Hi, I have the same problem.
Is there any fix? The path and the file that the program is trying to find doesn't even exists, so the problem should be with the program code.
mySyntenyPortal/src/lib/auto/Sort/Key/Key.so: undefined symbol: Perl_Istack_sp_ptr
Dear nortex,
I removed the built-in perl libraries and revised perl scripts.
Could you try to reinstall with the new commit version?
Thank you,
Jongin
Hi,
I was able to make it work with next steps:
- Unpacking new source package
- Before compiling (intstall build) - change all perl scripts to my relevant perl PATH binary(i am using modules and my Perl path is not the standard system /usr/bin/perl).
- After build finish, the check_modules script didn't recognise the installed modules on my Perl, i found that the check_modules was searching only in the program's lib directory(and maybe the standard system perl). After i moved physically perl modules from my perl lib location to the program's lib folder, the check_modules started to see the installed modules.
I would suggest the developer to work and update the program in order to make the compilation and set-up process of the program more easy and friendly for HPC systems(that mostly using modules and different versions of perl and other important system packages).
Regards,
Nortex
Hi,
I only was able to install mySyntenyPortal inside Singularity and Docker containers as shown below:
Singularity file:
BootStrap: docker
From: debian:stretch-backports
%help
A container with mySyntenyPortal
%post
apt-get update && apt-get -y upgrade
apt-get -y install \
build-essential \
zlib1g-dev \
python-dev \
imagemagick \
cpanminus \
pkg-config \
libgd-dev \
locales \
git
rm -rf /var/lib/apt/lists/*
apt-get clean
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_US.UTF-8
# install
git clone https://github.com/jkimlab/mySyntenyPortal.git
cd mySyntenyPortal
find . -name '*.pl' -exec sed -i.bak 's|#!/usr/bin/perl|#!/usr/bin/env perl|' {} +
sed -i.bak 's|definedForAll = -Wall -Wextra -Werror -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|definedForAll = -Wall -Wextra -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|' src/third_party/lastz/src/Makefile
cpanm Clone \
Config::General \
Data::PowerSet \
Font::TTF::Font \
GD \
GD::Polyline \
JSON \
Math::Bezier \
Math::Round \
Math::VecStat \
Parallel::ForkManager \
Readonly \
Regexp::Common \
SVG \
Set::IntSpan \
Sort::Key::Natural \
Statistics::Basic \
Text::Format
perl ./src/check_modules.pl \
./install.pl build
%environment
#export PATH=/usr/local/bin/:$PATH
export LANG=en_US.UTF-8
Dockerfile:
FROM debian:stretch-backports
ENV DEBIAN_FRONTEND noninteractive
RUN apt update && apt install -y \
build-essential \
zlib1g-dev \
python-dev \
imagemagick \
cpanminus \
pkg-config \
libgd-dev \
locales \
git \
&& rm -rf /var/lib/apt/lists/* && apt-get clean
RUN git clone https://github.com/jkimlab/mySyntenyPortal.git \
&& cd mySyntenyPortal \
&& find . -name '*.pl' -exec sed -i.bak 's|#!/usr/bin/perl|#!/usr/bin/env perl|' {} + \
&& sed -i.bak 's|definedForAll = -Wall -Wextra -Werror -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|definedForAll = -Wall -Wextra -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|' src/third_party/lastz/src/Makefile
RUN cpanm Clone \
Config::General \
Data::PowerSet \
Font::TTF::Font \
GD \
GD::Polyline \
JSON \
Math::Bezier \
Math::Round \
Math::VecStat \
Parallel::ForkManager \
Readonly \
Regexp::Common \
SVG \
Set::IntSpan \
Sort::Key::Natural \
Statistics::Basic \
Text::Format \
&& cd mySyntenyPortal \
&& perl ./src/check_modules.pl \
&& ./install.pl build
CMD ["/bin/bash"]