Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Mar 1997 20:17:04 +0300 (MSK)
From:      =?KOI8-R?B?4c7E0sXKIP7F0s7P1w==?= <ache@nagual.ru>
To:        Brian Somers <brian@awfulhak.demon.co.uk>
Cc:        CVS-committers@freebsd.org, cvs-all@freebsd.org, cvs-usrsbin@freebsd.org
Subject:   Re: cvs commit: src/usr.sbin/ppp timer.c 
Message-ID:  <Pine.BSF.3.95q.970308195709.375C-100000@nagual.ru>
In-Reply-To: <199703081531.PAA12796@awfulhak.demon.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 8 Mar 1997, Brian Somers wrote:

> The only time the code can "forget" to pend a signal is if it gets caused
> during the call to pending_signal() (between the signal() call and the
> caused &= bit).

In original code modem carrier was checked every 10 secs to sense carrier
drop (via SetTimer). After SIGALRM pending was introduced I got too often
unkillable loop (eating all CPU time) on carrier drop. It means that
reading from modem device occurse waiting for something, but got no input.
Checking carrier code close modem device, so loop never occurse if SIGALRM 
is not pended.


> This change is going to re-invent the recursive malloc() problem (or
> am I missing something?).

I never saw this malloc() problem by myself, moreover checking ppp code I
find too few malloc() calls, so I don't understand how recursion between
them is ever possible. The only signal which comes in normal operating
mode is SIGALRM and I not find any malloc() in SIGALRM handling. 

I consider having malloc() problem after two days of running is lesser bug
than having dead hang after 5minutes of running and carrier drop.

Moreover, looking deeper in the code, I saw that all signals was simple
replaced with pending signals (by editor replace command?) even when
it is not needed, like after fork, kill signals and fatal signals.

I think that so-called malloc() bug must be really fixed instead of
masking it with introducing even more bugs: dead loop on carrier drop +
unkillable ppp + continue operation on segmentation violation + broken
fork signals.

Proper fixing assumed not pending SIGALRM calls (true time is valuable
thing) but making all timer code recursion-safe.

-- 
Andrey A. Chernov
<ache@null.net>
http://www.nagual.ru/~ache/




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95q.970308195709.375C-100000>