[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
- bug#18438: 24.4.50; assertion failed in bidi.c, (continued)
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, Ken Brown, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, Ken Brown, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, Ken Brown, 2014/10/11
- bug#18438: 24.4.50; assertion failed in bidi.c, aidalgol, 2014/10/14
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/15
- bug#18438: 24.4.50; assertion failed in bidi.c, aidalgol, 2014/10/15
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/16
- bug#18438: 24.4.50; assertion failed in bidi.c,
Ken Brown <=
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/16
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/19
- bug#18438: 24.4.50; assertion failed in bidi.c, Ken Brown, 2014/10/19
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/19
- bug#18438: 24.4.50; assertion failed in bidi.c, aidalgol, 2014/10/19
- bug#18438: 24.4.50; assertion failed in bidi.c, aidalgol, 2014/10/19
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/20
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/20
- bug#18438: 24.4.50; assertion failed in bidi.c, Ivan Shmakov, 2014/10/20
- bug#18438: 24.4.50; assertion failed in bidi.c, Eli Zaretskii, 2014/10/20