jkimlab/mySyntenyPortal

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"]