bing@galbp.UUCP (09/30/87)
there seems to be a bug in the way alarms are handled in minix. i noticed the
problem only by accident. on my minix i have gotten rid of the ram disk and use
my hard disk as root. this means every 30 seconds when update does a sync(),
my hard disk light blinks. i was playing around with a small program that made
an alarm() call when i noticed update stopped running.
upon further investigation, i found out that if two processes are waiting
on an alarm, under an unknown set of circumstances, the second process (the one
with the longer alarm time) never receives a signal. i am trying to find the
bug now, below is the test program i use. it should run forever if alarm()
works ok, but now it stops after 1 or 2 itterations.
------------------------------------------------------------------------
#include <signal.h>
int pid, catcher();
main()
{
pid = fork();
for( ; ; )
{
signal(SIGALRM, catcher);
alarm(pid?5:7);
pause();
}
}
int
catcher()
{
if(pid)
write(1, "\nparent alarm.\n", 15);
else
write(1, "\nchild alarm.\n", 14);
}
--
Bing H. Bang +-------------------+
Harris/Lanier |MSDOS: just say no.|
Atlanta GA +-------------------+ast@star.UUCP (10/02/87)
In article <1767@galbp.LBP.HARRIS.COM> bing@galbp.UUCP (Bing Bang) writes: >there seems to be a bug in the way alarms are handled in minix. I think the fix Henri Bal posted to line 6617 a few days ago fixes this. Try it and see. Andy Tanenbaum (ast@cs.vu.nl)