GNU bug report logs - #12832
24.3.50; Emacs lockup when idle

Previous Next

Packages: emacs, w32;

Reported by: Andy Moreton <andrewjmoreton <at> gmail.com>

Date: Thu, 8 Nov 2012 12:58:02 UTC

Severity: normal

Found in version 24.3.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #68 received at 12832 <at> debbugs.gnu.org (full text, mbox):

From: Andy Moreton <andrewjmoreton <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 12832 <at> debbugs.gnu.org, fni <at> missioncriticalit.com, dmoncayo <at> gmail.com
Subject: Re: bug#12832: 24.3.50; Emacs lockup when idle
Date: Wed, 14 Nov 2012 12:44:39 +0000
On 13/11/2012 17:04, Eli Zaretskii wrote:
> Can you please try the patch below and see if it prevents the
> lock-ups?
>
> === modified file 'src/w32proc.c'
> --- src/w32proc.c	2012-11-05 03:18:32 +0000
> +++ src/w32proc.c	2012-11-13 16:59:53 +0000
> @@ -431,13 +431,24 @@ timer_loop (LPVOID arg)
>   	  /* Simulate a signal delivered to the thread which installed
>   	     the timer, by suspending that thread while the handler
>   	     runs.  */
> -	  DWORD result = SuspendThread (itimer->caller_thread);
> +	  DWORD result;
> +
> +	  if (dwMainThreadId)
> +	    enter_crit ();
> +	  result = SuspendThread (itimer->caller_thread);
>
>   	  if (result == (DWORD)-1)
> -	    return 2;
> +	    {
> +	      if (dwMainThreadId)
> +		leave_crit ();
> +	      return 2;
> +	    }
>
>   	  handler (sig);
>   	  ResumeThread (itimer->caller_thread);
> +
> +	  if (dwMainThreadId)
> +	    leave_crit ();
>   	}
>
>         /* Update expiration time and loop.  */
>

I applied this to emacs-24 branch (r110866) this morning. So far I've not seen 
a lockup, but I'll to run it for a day or two to be sure.

    AndyM






This bug report was last modified 12 years and 275 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.