As I've mentioned before, we (apache.org) are seeing our qpsmtpd processes
stuck in an infinite loop. We're using qpsmtpd-forkserver.
At Ask's suggestion, I've placed in Carp::Confess lines - but the program
isn't accepting signals when we reach this loop state. At all other times,
it'll respond to SIGUSR2 and print the perl stack trace.
I can't consistently reproduce this; but we get 5-10 perl processes a day
that are eating up all of our CPU.
Any help is appreciated. If you need/want coredumps, let me know. I'm
available on AIM if you want to help me debug this in real-time (email me
for my AIM nick). We have a collection of these processes SIGSTOPed so we
can examine them.
Does anyone think upgrading to perl 5.8.7 help?
Thanks! -- justin
gdb stack trace:
(gdb) where
#0 0x281040d2 in Perl_newSVpvn ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#1 0x280e9526 in Perl_magic_setsig ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#2 0x280e782b in Perl_mg_set ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#3 0x280f241d in Perl_pp_sassign ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#4 0x280f1fad in Perl_runops_standard ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#5 0x280a0c26 in S_run_body ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#6 0x280a08b1 in perl_run ()
from /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
#7 0x08049040 in main ()
pstack output:
57376: /usr/local/bin/perl5.8.6
----------------- thread -1 (running) -----------------
0x281040d2 Perl_newSVpvn (80543b0, 4, bfbfec40, 280e9306, 808cad8, 50) + 1e
0x280e9526 Perl_magic_setsig (808cb5c, 8098b38, bfbfecd8, 280f67ca,
808cad8, 8568044) + 22e
0x280e782b Perl_mg_set (808cb5c, 83e8844, 2, 280f238a, 808ff18, 820c094) +
6f
0x280f241d Perl_pp_sassign (80484b4, bfbfed24, 2804ff2b, 28178564,
bfbfee34, 9) + a1
0x280f1fad Perl_runops_standard (2806a5d8, 28178564, bfbfed88, 280a08b1,
1, 0) + 35
0x280a0c26 S_run_body (1, 0, 28052cdd, 2807a040, 804a150, bfbfed64) + 12e
0x280a08b1 perl_run (804c030, 804a0fc, bfbfedec, 8048fd5, 2806a5d8,
2827251c) + 8d
0x8049040 main (9, bfbfee34, bfbfee5c, 8048eb2, 8049b14, 0) + d8
0x8048ebd _start (bfbfeee4, bfbfeef2, bfbfeef6, bfbfef0b, bfbfef0e,
bfbfef11) + 85
lsof output:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
perl5.8.6 57376 smtpd cwd VDIR 4,14 512 2956294
/usr/home/smtpd/qpsmtpd
perl5.8.6 57376 smtpd rtd VDIR 4,14 512 2 /
perl5.8.6 57376 smtpd txt VREG 4,14 10076 2190650
/usr/local/bin/perl
perl5.8.6 57376 smtpd txt VREG 4,14 142236 455321
/libexec/ld-elf.so.1
perl5.8.6 57376 smtpd txt VREG 4,14 1131877 2482217
/usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so
perl5.8.6 57376 smtpd txt VREG 4,14 120004 2841954 /lib/libm.so.3
perl5.8.6 57376 smtpd txt VREG 4,14 28644 2833198
/lib/libcrypt.so.2
perl5.8.6 57376 smtpd txt VREG 4,14 43108 2841956
/lib/libutil.so.4
perl5.8.6 57376 smtpd txt VREG 4,14 889908 2841961 /lib/libc.so.5
perl5.8.6 57376 smtpd txt VREG 4,14 7038 2482042
/usr/local/lib/perl5/5.8.6/mach/auto/Sys/Hostname/Hostname.so
perl5.8.6 57376 smtpd txt VREG 4,14 17360 2481822
/usr/local/lib/perl5/5.8.6/mach/auto/IO/IO.so
perl5.8.6 57376 smtpd txt VREG 4,14 18438 2481805
/usr/local/lib/perl5/5.8.6/mach/auto/Fcntl/Fcntl.so
perl5.8.6 57376 smtpd txt VREG 4,14 112273 2481994
/usr/local/lib/perl5/5.8.6/mach/auto/POSIX/POSIX.so
perl5.8.6 57376 smtpd txt VREG 4,14 7630 2081259 /
(/dev/da0s1a)
perl5.8.6 57376 smtpd txt VREG 4,14 27641 2482012
/usr/local/lib/perl5/5.8.6/mach/auto/Socket/Socket.so
perl5.8.6 57376 smtpd 0r VCHR 2,2 0t0 22 /dev/null
perl5.8.6 57376 smtpd 1u PIPE 0xc3d5622c 0 ->0xc3d56180
perl5.8.6 57376 smtpd 2u PIPE 0xc3d5622c 0 ->0xc3d56180
perl5.8.6 57376 smtpd 3r VREG 4,14 6131 2955766
/usr/home/smtpd/qpsmtpd/qpsmtpd-forkserver
perl5.8.6 57376 smtpd 5u IPv4 0t0 TCP no PCB,
CANTSENDMORE, CANTRCVMORE