Subject: Re: bug#21965: 24.5; Emacs freezes when canceling at open file

From: Maneesh Yadav <[email-masked]>
Date: Mon, 23 Nov 2015 16:30:59 -0800

I don't understand the apple framework/glib event handling structure
and I doubt this is terribly informative, but for the sake of
completeness the output of 'thread list' is pasted below:

(lldb) thread list

Process 23166 stopped

* thread #1: tid = 0x4d18b, 0x00007fff8a861166
libsystem_kernel.dylib`__psynch_mutexwait + 10, queue =
'com.apple.main-thread', stop reason = signal SIGSTOP

  thread #2: tid = 0x4d18c, 0x00007fff8a8613fa
libsystem_kernel.dylib`__select + 10, name = 'gmain'

(lldb)

On Mon, Nov 23, 2015 at 2:17 PM, John Wiegley <[email-masked]> wrote:
>>>>>> Maneesh Yadav <[email-masked]> writes:
>
>> Flog me if I am not doing this right. Seems that +debug on macports is the
>> easy to make debug compiles (an old thread seemed to suggest that macports
>> rejected this idea...but I guess it was eventually accepted). So installed
>> emacs +debug and reproduced the crash, attached to emacs via lldb and got
>> this backtrace (which looks a lot like the previous, can I provide better
>> info somehow?):
>
> We're still missing file and line numbers for the Emacs code, which is odd.
> But not terribly important, since the lockup is happening inside glib, it
> appears.
>
>>     frame #3: 0x00000001009db284
>>     libglib-2.0.0.dylib`g_main_context_acquire + 42
>
> So, here's that function, more or less:
>
>     gboolean
>     g_main_context_acquire (GMainContext *context)
>     {
>       gboolean result = FALSE;
>       GThread *self = G_THREAD_SELF;
>
>       if (context == NULL)
>         context = g_main_context_default ();
>
>       LOCK_CONTEXT (context);
>       /* ... */
>     }
>
> We're blocked waiting on the context. The question then being: who else has
> that context? Is it another Emacs thread?
>
> Eli, does this ring any bells?
>
> John