
xning at redhat
Apr 9, 2012, 3:08 AM
Post #1 of 15
(170 views)
Permalink
|
|
perl5db.pl failed on Fedora 16 when debug scripts which executes fork() calls
|
|
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 [at] localhos -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
|