bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18438: 24.4.50; assertion failed in bidi.c


From: Ken Brown
Subject: bug#18438: 24.4.50; assertion failed in bidi.c
Date: Thu, 16 Oct 2014 09:11:18 -0400
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0

On 10/16/2014 3:27 AM, Eli Zaretskii wrote:
Let's try to get a couple more full backtraces like this one, in case
some pattern emerges that could give us some ideas.

I saw some things in Thread 7 (the Windows message queue thread), especially frame #14, which got me to look at the code for w32_wnd_proc in w32fns.c. The code is about 1300 lines long, and includes several comments about why it is thread-safe. Here are a few examples:

     Walking the frame list in this thread is safe (as long as
     writes of Lisp_Object slots are atomic, which they are on Windows).

     It is also safe to use functions that make GDI calls, such as
     w32_clear_rect, because these functions must obtain a DC handle
     from the frame struct using get_frame_dc which is thread-aware.

     The code below does something that one shouldn't do: it
     accesses the window object from a separate thread, while the
     main (a.k.a. "Lisp") thread runs and can legitimately delete
     and even GC it.  That is why we are extra careful...

I wonder if something in these 1300 lines is not thread-safe on Cygwin. For example, I don't know if it's true on Cygwin that "writes of Lisp_Object slots are atomic".

Ken, isn't it strange that these crashes are reported by so few
people?  Or does it mean that only those people are using the 64-bit
Cygwin-w32 build?  Maybe it would be worth asking on the Cygwin list,
and getting us some usage statistics for this build, like how many are
using it, and how much uptime each one can generally report?  Then, if
only some of them get the crashes, we could try figuring out what are
the differences between their systems.

That's a good idea.  I'll do it right now.  Thanks for the suggestion.

Ken





reply via email to

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