Skip Menu |

This queue is for tickets about the threads CPAN distribution.

Report information
The Basics
Id: 102406
Status: rejected
Priority: 0/
Queue: threads

People
Owner: Nobody in particular
Requestors: matthew.croteau [...] emc.com
Cc:
AdminCc:

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



Subject: no effective way to debug threads in perl > 5.16
Date: Fri, 27 Feb 2015 17:10:04 +0000
To: "bug-threads [...] rt.cpan.org" <bug-threads [...] rt.cpan.org>
From: "Croteau, Matthew (USD, Hopkinton)" <matthew.croteau [...] emc.com>
Hello, we're noticing that in perl versions greater than 5.16 there is now no effective way to debug perl programs that use threads. perl -d no longer works in perl 5.18 and 5.20 due to: lock can only be used on shared values at C:/Perl520/lib/perl5db.pl line 4101. BEGIN failed--compilation aborted at try.pl line 3. The suggested debug method is to run perl -dt, yet that hangs on every version of Perl I've tried on thread invocation: Windows 32 bit: This is perl 5, version 20, subversion 1 (v5.20.1) built for MSWin32-x86-multi-thread-64int (with 1 registered patch, see perl -V for more detail) Linux system perl This is perl, v5.10.0 build for x86_64-linux-thread-multi Linux perl 5.16 This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 1 registered patch, see perl -V for more detail) Linux perl 5.20 This is perl 5, version 20, subversion 1 (v5.20.1) built for i586-linux-gnu-thread-multi-64int (with 39 registered patches, see perl -V for more detail) The hang happens on this simple example script when running perl -dt: vvvvvvvvvvvvvvvvvvvvvvv use threads; my $thread = threads->new(sub { $DB::single = 1; print "Hey there\n"; return 1; }); $thread->join(); ^^^^^^^^^^^^^^^^^^^^ Thank you, Matthew
From: vega.james [...] gmail.com
On Fri Feb 27 12:10:42 2015, matthew.croteau@emc.com wrote: Show quoted text
> Hello, we're noticing that in perl versions greater than 5.16 there is > now no effective way to debug perl programs that use threads. > > perl -d no longer works in perl 5.18 and 5.20 due to: > lock can only be used on shared values at C:/Perl520/lib/perl5db.pl > line 4101. > BEGIN failed--compilation aborted at try.pl line 3.
This is an issue with perl5db.pl and there are patches for it at <https://rt.perl.org/Public/Bug/Display.html?id=124127>. Show quoted text
> The suggested debug method is to run perl -dt, yet that hangs on every > version of Perl I've tried on thread invocation:
This has previously been reported against Perl as well (c.f., <https://rt.perl.org/Public/Bug/Display.html?id=120170>) although there hasn't been any update to that bug since it was filed. Here's a backtrace from the hang using Debian's perl 5.20.2 build (gdb) info threads Id Target Id Frame * 1 Thread 0x7f658f5da700 (LWP 25711) "debugperl" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 (gdb) bt #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x00007f658dcb0f53 in recursive_lock_acquire (my_perl=0x2c1c190, lock=0x1dfb340, file=<optimized out>, line=<optimized out>) at shared.xs:225 #2 0x0000000000554317 in Perl_pp_lock (my_perl=0x2c1c190) at pp.c:5861 #3 0x00000000004ca719 in Perl_runops_debug (my_perl=0x2c1c190) at dump.c:2427 #4 0x000000000043f509 in Perl_call_sv (my_perl=0x1dfb37c, sv=0x2d38258, flags=6) at perl.c:2756 #5 0x0000000000533cc4 in perl_clone (proto_perl=0x2d06580, flags=128) at sv.c:14104 #6 0x00007f658e0c7d60 in S_ithread_create (num_params=<optimized out>, params_start=<optimized out>, exit_opt=<optimized out>, gimme=<optimized out>, stack_size=<optimized out>, init_function=<optimized out>, parent_perl=<optimized out>) at threads.xs:785 #7 XS_threads_create (my_perl=0x1b9f010, cv=0x80) at threads.xs:1095 #8 0x00000000004ff9b7 in Perl_pp_entersub (my_perl=0x1b9f010) at pp_hot.c:2794 #9 0x00000000004ca719 in Perl_runops_debug (my_perl=0x1b9f010) at dump.c:2427 #10 0x00000000004497e8 in S_run_body (oldscope=<optimized out>, my_perl=<optimized out>) at perl.c:2456 #11 perl_run (my_perl=0x1dfb37c) at perl.c:2372 #12 0x000000000041cd87 in main (argc=10, argv=0x7ffddff06da8, env=0x7ffddff06e00) at perlmain.c:114 Summary of my perl5 (revision 5 version 20 subversion 2) configuration: Platform: osname=linux, osvers=3.2.0-4-amd64, archname=x86_64-linux-gnu-thread-multi uname='linux babin 3.2.0-4-amd64 #1 smp debian 3.2.65-1+deb7u2 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.20 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.20 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.20.2 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.20.2 -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.9.2', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20 gnulibc_version='2.19' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector' Characteristics of this binary (from libperl): Compile-time options: DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV PERL_TRACK_MEMPOOL USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API Locally applied patches: DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN. DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information. DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes. DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking DEBPKG:fixes/respect_umask - Respect umask during installation DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.20.2-3 in patchlevel.h DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags} DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories DEBPKG:fixes/regcomp-mips-optim - [perl #122817] http://bugs.debian.org/754054 Downgrade the optimization of regcomp.c on mips and mipsel due to a gcc-4.9 bug DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/758471 Pass LD settings through to subdirectories DEBPKG:fixes/perldoc-less-R - [rt.cpan.org #98636] http://bugs.debian.org/758689 Tell the 'less' pager to allow terminal escape sequences DEBPKG:fixes/pod_man_reproducible_date - http://bugs.debian.org/759405 Support POD_MAN_DATE in Pod::Man for the left-hand footer DEBPKG:fixes/io_uncompress_gunzip_inmemory - http://bugs.debian.org/747363 [rt.cpan.org #95494] Fix gunzip to in-memory file handle DEBPKG:fixes/socket_test_recv_fix - http://bugs.debian.org/758718 [perl #122657] Compare recv return value to peername in socket test DEBPKG:fixes/hurd_socket_recv_todo - http://bugs.debian.org/758718 [perl #122657] TODO checking the result of recv() on hurd DEBPKG:fixes/regexp-performance - [0fa70a0] http://bugs.debian.org/777556 [perl #123743] simpify and speed up /.*.../ handling DEBPKG:fixes/failed_require_diagnostics - http://bugs.debian.org/781120 [perl #123270] Report inaccesible file on failed require Built under linux Compiled at Mar 29 2015 16:38:07 @INC: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .