All of lore.kernel.org
 help / color / mirror / Atom feed
* CVS 20040201, "Terminating on signal 2" loop
@ 2004-01-01 22:53 James Cameron
  0 siblings, 0 replies; only message in thread
From: James Cameron @ 2004-01-01 22:53 UTC (permalink / raw)
  To: linux-ppp

I was just giving PPP in CVS a test run, started a connection through a
pty, which established normally, and then pressed Control/C.  pppd then
reported "Terminating on signal 2." 10376 times and segfaulted.

Quite reproducible.  So I did an strace and looked at the source.  On
receipt of a SIGINT from Control/C, term() calls kill_my_pg() to signal the
process group.

It appears that despite kill_my_pg() calling sigaction() to ignore the
signal being resent to the process group, the kernel sends pppd a SIGINT
again.

667   --- SIGINT (Interrupt) @ 0 (0) ---
667   time([1072996209])                = 1072996209
667   getpid()                          = 667
667   rt_sigaction(SIGPIPE, {0x4013ebe0, [], SA_RESTORER, 0x40094498},
{SIG_IGN}
, 8) = 0
667   send(3, "<30>Jan  2 09:30:09 pppd[667]: T"..., 55, 0) = 55
667   rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
667   write(2, "Terminating on signal 2.", 24) = 24
667   write(2, "\n", 1)                 = 1
667   rt_sigaction(SIGINT, {SIG_IGN}, {0x8050290, [HUP INT USR2 TERM
CHLD], SA_R
ESTORER, 0x40094498}, 8) = 0
667   kill(0, SIGINT)                   = 0
667   rt_sigaction(SIGINT, {0x8050290, [HUP INT USR2 TERM CHLD],
SA_RESTORER, 0x
40094498}, NULL, 8) = 0
667   rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
667   --- SIGINT (Interrupt) @ 0 (0) ---
[...]
667   --- SIGINT (Interrupt) @ 0 (0) ---
667   --- SIGSEGV (Segmentation fault) @ 0 (0) ---
667   --- SIGSEGV (Segmentation fault) @ 0 (0) ---
667   +++ killed by SIGSEGV +++

Kernel is 2.4.23 from Debian sources, with MPPE patch applied from PPP
CVS.  The connection was using MPPE, but I doubt that relates.  Pentium
266MHz test machine.

If I try running under gdb, Control/C stops the program so gdb can take
over, and "continue" results in normal disconnection and exit.

Anyone know the cause?  It seems pppd is doing the right thing, but I
don't recall whether sigaction() has immediate effect or not.

-- 
James Cameron                         http://quozl.netrek.org/
HP Open Source, Volunteer             http://opensource.hp.com/
PPTP Client Project, Release Engineer http://pptpclient.sourceforge.net/

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-01-01 22:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-01 22:53 CVS 20040201, "Terminating on signal 2" loop James Cameron

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.