[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);
          t->next = free_atimers;
          free_atimers = t;
      t->fn (t);                        /* to here */

                                     YAMAMOTO Mitsuharu

reply via email to

[Prev in Thread] Current Thread [Next in Thread]