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>