[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can't stop synchronous processes for the second time
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: Can't stop synchronous processes for the second time |
Date: |
Fri, 16 Apr 2004 17:40:33 +0900 |
User-agent: |
Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.5 (Awara-Onsen) FLIM/1.14.5 (Demachiyanagi) APEL/10.6 Emacs/21.3.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On Wed, 14 Apr 2004 18:53:10 -0400, Richard Stallman <address@hidden>
>>>>> said:
> Can you determine why it doesn't quit then? First question: is
> polling occurring?
No. Neither `poll_for_input' nor `poll_for_input_1' is called after
the first quit.
> If not, did it get turned off with a call to stop_polling?
No. The value of `poll_suppress_count' remains to be 0.
> Or is Emacs setting up an alarm signal but the signal handler is not
> getting called?
The signal handler `alarm_signal_handler' is getting called, but
there's no `polling_for_input' entry in `atimers' after the first
quit. I think `schedule_atimer' is not called for that entry in the
handler because `polling_for_quit' leads to longjmp when the first
quit is processed. If I change the place to call `t->fn' as follows,
then the second quit succeeds.
t = atimers;
atimers = atimers->next;
/* t->fn (t); */ /* from here */
if (t->type == ATIMER_CONTINUOUS)
{
EMACS_ADD_TIME (t->expiration, now, t->interval);
schedule_atimer (t);
}
else
{
t->next = free_atimers;
free_atimers = t;
}
t->fn (t); /* to here */
YAMAMOTO Mitsuharu
address@hidden