develooper Front page | perl.perl5.porters | Postings from April 2012

perl5db.pl failed on Fedora 16 when debug scripts which executesfork() calls

Thread Next
From:
Xibo Ning
Date:
April 9, 2012 03:09
Subject:
perl5db.pl failed on Fedora 16 when debug scripts which executesfork() calls
Message ID:
4F82B539.5030305@redhat.com
Hi,
On Fedora 16, although environment variable 'TERM' has value 'xterm', 
xterm isn't installed. So, when debug scripts which will execute fork(), 
perl5db.pl will fail and quit when it executes the following codes, 
enters line 1493 ~ 1500, because function xterm_get_fork_TTY need xterm 
program:

1487 if (not defined &get_fork_TTY)
1488 {
1489     if ( defined $remoteport ) {
1490 

1491         *get_fork_TTY = \&socket_get_fork_TTY;
1492     }
1493     elsif (defined $ENV{TERM}
1494 

1495         and $ENV{TERM} eq 'xterm'
1496         and defined $ENV{DISPLAY}
1497       )
1498     {
1499         *get_fork_TTY = \&xterm_get_fork_TTY;
1500     }
1501     elsif ( $^O eq 'os2' ) {
1502         *get_fork_TTY = \&os2_get_fork_TTY;
1503     }
1504     elsif ( $^O eq 'darwin'
1505             and defined $ENV{TERM_PROGRAM}
1506             and $ENV{TERM_PROGRAM}
1507                 eq 'Apple_Terminal'
1508             )
1509     {
1510         *get_fork_TTY = \&macosx_get_fork_TTY;
1511     }
1512 } ## end if (not defined &get_fork_TTY...

I also think it's better for perl5db.pl to support linux current 
terminal emulation applications, so I make a patch. I have test the 
patch on gnome (ubuntu 10.04, Fedora 16), kde (opensuse 12), xfce 
(xubuntu 10.04.2), and lxde (mint 12). The patch works well.

The patch makes perl5db.pl support gnome-terminal, konsole, 
xfce4-terminal, terminal (xfce), lxterminal, and xterm in linux system. 
So, xterm becomes one of the terminal emulation applications supported 
in linux system, not the only one as before.

How to reproduce the problem? Rename xterm or move it to other
directory, then debug a script that will execute fork() function.

I put a test case and the patch in attachments. And perlbug collects 
some information as follows, hope it's helpful.

[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
     category=core
     severity=medium
---
This perlbug was built using Perl 5.14.2 in the Fedora build system.
It is being executed now by Perl 5.14.2 - Thu Feb 23 10:37:48 UTC 2012.

Site configuration information for perl 5.14.2:

Configured by Red Hat, Inc. at Thu Feb 23 10:37:48 UTC 2012.

Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

   Platform:
     osname=linux, osvers=2.6.32-220.4.1.el6.x86_64, 
archname=x86_64-linux-thread-multi
     uname='linux x86-05.phx2.fedoraproject.org 
2.6.32-220.4.1.el6.x86_64 #1 smp thu jan 19 14:50:54 est 2012 x86_64 
x86_64 x86_64 gnulinux '
     config_args='-des -Doptimize=-O2 -g -pipe -Wall 
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4  -m64 -mtune=generic 
-Dccdlflags=-Wl,--enable-new-dtags -DDEBUGGING=-g -Dversion=5.14.2 
-Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red 
Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local 
-Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 
-Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl 
-Darchlib=/usr/lib64/perl5 -Dvendorarch=/usr/lib64/perl5/vendor_perl 
-Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 
/usr/lib64 -Duseshrplib -Dusethreads -Duseithreads 
-Dusedtrace=/usr/bin/dtrace -Duselargefiles -Dd_semctl_semun -Di_db 
-Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio 
-Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly 
-Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto 
-Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto 
-Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin'
     hint=recommended, useposix=true, d_sigaction=define
     useithreads=define, usemultiplicity=define
     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
     use64bitint=define, use64bitall=define, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing 
-pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64',
     optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
     cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe 
-fstack-protector -I/usr/local/include'
     ccversion='', gccversion='4.6.2 20111027 (Red Hat 4.6.2-1)', 
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='gcc', ldflags =' -fstack-protector'
     libpth=/usr/local/lib64 /lib64 /usr/lib64
     libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread 
-lc -lgdbm_compat
     perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
     libc=, so=so, useshrplib=true, libperl=libperl.so
     gnulibc_version='2.14.90'
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, 
ccdlflags='-Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE'
     cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall 
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4 -m64 -mtune=generic'

Locally applied patches:


---
@INC for perl 5.14.2:
     /usr/local/lib64/perl5
     /usr/local/share/perl5
     /usr/lib64/perl5/vendor_perl
     /usr/share/perl5/vendor_perl
     /usr/lib64/perl5
     /usr/share/perl5
     .

---
Environment for perl 5.14.2:
     HOME=/home/tsllst
     LANG=en_US.UTF-8
     LANGUAGE (unset)
     LD_LIBRARY_PATH (unset)
     LOGDIR (unset)
 
PATH=/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tsllst/.local/bin:/home/tsllst/bin
     PERL_BADLANG (unset)
     SHELL=/bin/bash


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About