Skip Menu |

This queue is for tickets about the Proc-ProcessTable CPAN distribution.

Report information
The Basics
Id: 131102
Status: open
Priority: 0/
Queue: Proc-ProcessTable

People
Owner: Nobody in particular
Requestors: NHORNE [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.59
Fixed in: (no value)



Subject: undefined symbol: pthread_once
This is on Debian Linux, perl5.30.1 compiled without threads: $ make test "/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin/perl5.30.1" -MExtUtils::Command::MM -e 'cp_nonempty' -- ProcessTable.bs blib/arch/auto/Proc/ProcessTable/ProcessTable.bs 644 PERL_DL_NONLAZY=1 "/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin/perl5.30.1" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t ===( 1;0 1/1 0/? 0/? 0/? 0/? 0/? 0/? 0/? 0/? 0/? )====== # Failed test 'use Proc::ProcessTable;' # at t/00-load.t line 6. # Tried to use 'Proc::ProcessTable'. # Error: Can't load '/tmp/user/1000/build/Proc-ProcessTable-0.59-9/blib/arch/auto/Proc/ProcessTable/ProcessTable.so' for module Proc::ProcessTable: /tmp/user/1000/build/Proc-ProcessTable-0.59-9/blib/arch/auto/Proc/ProcessTable/ProcessTable.so: undefined symbol: pthread_once at /home/njh/perl5/perlbrew/perls/perl-5.30.1/lib/5.30.1/x86_64-linux/DynaLoader.pm line 193. # at t/00-load.t line 6. # Compilation failed in require at t/00-load.t line 6. # BEGIN failed--compilation aborted at t/00-load.t line 6. Bailout called. Further testing stopped: FAILED--Further testing stopped. make: *** [Makefile:1061: test_dynamic] Error 255
It gets stuck in some strange AUTOLOAD problem which keeps looping and eventually causes the system to trash on swapping rm -f blib/arch/auto/Proc/ProcessTable/ProcessTable.so cc -shared -O2 -L/usr/local/lib -fstack-protector-strong OS.o ProcessTable.o -o blib/arch/auto/Proc/ProcessTable/ProcessTable.so \ \ chmod 755 blib/arch/auto/Proc/ProcessTable/ProcessTable.so Manifying 4 pod documents (/usr/bin/make -j10 -j10 exited with 0) CPAN::Reporter: make result is 'pass', No errors. JWB/Proc-ProcessTable-0.59.tar.gz /usr/bin/make -j10 -j10 -- OK Running make test for JWB/Proc-ProcessTable-0.59.tar.gz "/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin/perl5.30.1" -MExtUtils::Command::MM -e 'cp_nonempty' -- ProcessTable.bs blib/arch/auto/Proc/ProcessTable/ProcessTable.bs 644 PERL_DL_NONLAZY=1 "/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin/perl5.30.1" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/manifest.t ............................ skipped: Author tests not required for installation Can't load '/tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so' for module Proc::ProcessTable: /tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so: undefined symbol: pthread_once at /home/njh/perl5/perlbrew/perls/perl-5.30.1/lib/5.30.1/x86_64-linux/DynaLoader.pm line 193. at t/01-instiantied_object_only_methods.t line 10. Compilation failed in require at t/01-instiantied_object_only_methods.t line 10. BEGIN failed--compilation aborted at t/01-instiantied_object_only_methods.t line 10. # Looks like your test exited with 2 before it could output anything. t/01-instiantied_object_only_methods.t .. Dubious, test returned 2 (wstat 512, 0x200) Failed 2/2 subtests t/openbsd-size-rss.t .................... skipped: OpenBSD-specific tests # Failed test 'use Proc::ProcessTable;' # at t/bugfix-106571_odd_process_name.t line 10. # Tried to use 'Proc::ProcessTable'. # Error: Can't load '/tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so' for module Proc::ProcessTable: /tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so: undefined symbol: pthread_once at /home/njh/perl5/perlbrew/perls/perl-5.30.1/lib/5.30.1/x86_64-linux/DynaLoader.pm line 193. # at t/bugfix-106571_odd_process_name.t line 10. # Compilation failed in require at t/bugfix-106571_odd_process_name.t line 10. # BEGIN failed--compilation aborted at t/bugfix-106571_odd_process_name.t line 10. # Failed test 'use Proc::ProcessTable;' # at t/bugfix-51470_cmndline_mod_error.t line 10. # Tried to use 'Proc::ProcessTable'. # Error: Can't load '/tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so' for module Proc::ProcessTable: /tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/arch/auto/Proc/ProcessTable/ProcessTable.so: undefined symbol: pthread_once at /home/njh/perl5/perlbrew/perls/perl-5.30.1/lib/5.30.1/x86_64-linux/DynaLoader.pm line 193. # at t/bugfix-51470_cmndline_mod_error.t line 10. # Compilation failed in require at t/bugfix-51470_cmndline_mod_error.t line 10. # BEGIN failed--compilation aborted at t/bugfix-51470_cmndline_mod_error.t line 10. Deep recursion on subroutine "Proc::ProcessTable::AUTOLOAD" at /tmp/user/1000/build/Proc-ProcessTable-0.59-0/blib/lib/Proc/ProcessTable.pm line 30. ^CCommand terminated with non-zero status. Command [cpan -i Proc::ProcessTable] terminated with exit code 0 ($? = 2) under the following perl environment: Current perl: Name: perl-5.30.1 Path: /home/njh/perl5/perlbrew/perls/perl-5.30.1/bin/perl Config: -de -Dprefix=/home/njh/perl5/perlbrew/perls/perl-5.30.1 -Dusedevel -Accflags=-O2 -W -Wformat=2 -Wswitch -Wshadow -Wwrite-strings -Wuninitialized -Wall -pipe -fomit-frame-pointer -pedantic -D_FORTIFY_SOURCE=2 -Wpointer-arith -Wstrict-prototypes -fstack-protector -Wstack-protector -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wdisabled-optimization -Wendif-labels -Wfloat-equal -Wformat-nonliteral -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wformat-security -ftree-vectorize -msse -mfpmath=sse -msse2 -mssse3 -msse4.1 -msse4.2 -maes -fdiagnostics-color=auto -mtune=native -march=native -flto -Aeval:scriptdir=/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin Compiled at: Nov 10 2019 17:43:16 perlbrew: version: 0.87 ENV: PERLBREW_ROOT: /home/njh/perl5/perlbrew PERLBREW_HOME: /home/njh/.perlbrew PERLBREW_PATH: /home/njh/perl5/perlbrew/bin:/home/njh/perl5/perlbrew/perls/perl-5.30.1/bin PERLBREW_MANPATH: /home/njh/perl5/perlbrew/perls/perl-5.30.1/man
Can you share the output of $ ldd blib/arch/auto/Proc/ProcessTable/ProcessTable.so It smells for an automatic added external dependency wanting -pthread.
$ ldd blib/arch/auto/Proc/ProcessTable/ProcessTable.so linux-vdso.so.1 (0x00007ffdb254d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5fddff1000) /lib64/ld-linux-x86-64.so.2 (0x00007f5fde1de000)
To bad - sane system :/ You've only showed the link stage, how does the compile stage look like? Is somewhere in the source (OS.c, ProcessTable.xs) a "hidden" use of pthread in some circumstances?
On Wed Jan 22 15:31:00 2020, REHSACK wrote: Show quoted text
> To bad - sane system :/ > > You've only showed the link stage, how does the compile stage look > like? > Is somewhere in the source (OS.c, ProcessTable.xs) a "hidden" use of > pthread in some circumstances?
This is what a grep shows me: hints/linux.pl:my $thread_lib = "-lpthread"; os/Linux.c:#include <pthread.h> /* pthead_once */ os/Linux.c:static pthread_once_t globals_init = PTHREAD_ONCE_INIT; os/Linux.c: pthread_once(&globals_init, init_static_vars); OS.c:#include <pthread.h> /* pthead_once */ OS.c:static pthread_once_t globals_init = PTHREAD_ONCE_INIT; OS.c: pthread_once(&globals_init, init_static_vars); ProcessTable.xs:#include <pthread.h> ProcessTable.xs:pthread_mutex_t _mutex_table; ProcessTable.xs:pthread_mutex_t _mutex_new; ProcessTable.xs:mutex_op(int lock, pthread_mutex_t *mutex) ProcessTable.xs: pthread_mutex_unlock(mutex); ProcessTable.xs: pthread_mutex_lock(mutex); ProcessTable.xs: pthread_mutex_init(&_mutex_table, NULL); ProcessTable.xs: pthread_mutex_init(&_mutex_new, NULL);