[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#942073: marisa: perl bindings are broken when linked with gcc-9



Package: libmarisa-perl
Version: 0.2.5-3
Severity: grave
Control: block 935737 with -1

As noticed by the autopkgtest checks, the marisa Perl bindings are
totally broken in sid after the recent Perl 5.30 rebuild:

  $ perl -e 'use marisa'
  Can't load '/usr/lib/x86_64-linux-gnu/perl5/5.30/auto/marisa/marisa.so' for module marisa: /usr/lib/x86_64-linux-gnu/perl5/5.30/auto/marisa/marisa.so: undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE at /usr/lib/x86_64-linux-gnu/perl/5.30/DynaLoader.pm line 193.
   at /usr/lib/x86_64-linux-gnu/perl5/5.30/marisa.pm line 11.
  Compilation failed in require at -e line 1.
  BEGIN failed--compilation aborted at -e line 1.
 
Rebuilding marisa in testing with Perl 5.28 triggers the same behaviour,
so it's not a change in Perl 5.30 that broke it. The previous sid build
in July is not broken.

It looks like this regressed with the gcc 8 -> 9 move. Linking the
DSO manually with gcc-8 makes it go away, as seen below.

I have no idea what goes wrong here, but I noticed that broken versions
of blib/arch/auto/marisa/marisa.so have no NEEDED entry for libmarisa.so.0
(as seen with 'objdump -p').

---- reproduce the error ----

  # apt build-dep libmarisa-perl
  $ ./debian/rules build
  $ cd bindings/perl
  $ LD_LIBRARY_PATH=../../lib/marisa/.libs/ perl -I blib/arch -I blib/lib -e 'use marisa'
  Can't load 'blib/arch/auto/marisa/marisa.so' for module marisa: blib/arch/auto/marisa/marisa.so: undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE at /usr/lib/x86_64-linux-gnu/perl/5.30/DynaLoader.pm line 193.
   at blib/lib/marisa.pm line 11.
  Compilation failed in require at -e line 1.
  BEGIN failed--compilation aborted at -e line 1.

---- explicitly link with gcc-8, no error ---

  # apt install gcc-8
  $ gcc-8 -shared -L/usr/local/lib -L../../lib/marisa/.libs -lmarisa -fstack-protector -Wl,-z,relro -Wl,-z,now -Wl,--as-needed  marisa-swig.o marisa-swig_wrap.o  -o blib/arch/auto/marisa/marisa.so
  $ LD_LIBRARY_PATH=../../lib/marisa/.libs/ perl -I blib/arch -I blib/lib -e 'use marisa'

---- explicitly link with gcc-9, same error again ---

  $ gcc-9 -shared -L/usr/local/lib -L../../lib/marisa/.libs -lmarisa -fstack-protector -Wl,-z,relro -Wl,-z,now -Wl,--as-needed  marisa-swig.o marisa-swig_wrap.o  -o blib/arch/auto/marisa/marisa.so
  $ LD_LIBRARY_PATH=../../lib/marisa/.libs/ perl -I blib/arch -I blib/lib -e 'use marisa'
  Can't load 'blib/arch/auto/marisa/marisa.so' for module marisa: blib/arch/auto/marisa/marisa.so: undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE at /usr/lib/x86_64-linux-gnu/perl/5.30/DynaLoader.pm line 193.
   at blib/lib/marisa.pm line 11.
  Compilation failed in require at -e line 1.
  BEGIN failed--compilation aborted at -e line 1.

-- 
Niko Tyni   ntyni@debian.org


Reply to: