GNU bug report logs -
#78654
NS Emacs crashing (since stipples?)
Previous Next
Reported by: Ship Mints <shipmints <at> gmail.com>
Date: Sat, 31 May 2025 21:47:01 UTC
Severity: normal
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Wed, 04 Jun 2025 19:58:18 +0300
with message-id <86zfenmok5.fsf <at> gnu.org>
and subject line Re: bug#78654: NS Emacs crashing (since stipples?)
has caused the debbugs.gnu.org bug report #78654,
regarding NS Emacs crashing (since stipples?)
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
78654: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78654
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
I'm thinking it might have been this (I cc'd Ben)
commit 9cbbdcee132588a11dc03c3da371176aaa13927c it's the only one that
looks relevant. That said, it is possible I'm tickling a bug that's been
there longer.
I pulled a master today and recompiled from clean and it still happens.
It's a bit spurious, but regular over the last few days. There are no
stipples used in the buffer in question, so this looks like a side effect
of that change, I'm guessing. There are specified spaces in the body of
the buffer and also in the header-line that are "stretch" glyphs.
This comes up as I go through a battery of tests for the revised vtable
that has image content in a test jig and with multiple vtables sharing the
same buffer (I doubt that has any bearing).
I will try to see if I can reproduce without images if that indicates
anything.
$ uname -a
Darwin host.local 21.6.0 Darwin Kernel Version 21.6.0: Mon Jun 24 00:56:10
PDT 2024; root:xnu-8020.240.18.709.2~1/RELEASE_X86_64 x86_64
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0xa8)
* frame #0: 0x00000001000e79bb
emacs`prepare_face_for_display(f=0x0000000102f41b70,
face=0x0000000000000000) at xfaces.c:4657:16 [opt]
frame #1: 0x000000010025d599
emacs`ns_draw_stretch_glyph_string(s=0x00007ff7bfef9eb0) at nsterm.m:4176:8
[opt]
frame #2: 0x000000010025a532
emacs`ns_draw_glyph_string(s=0x00007ff7bfef9eb0) at nsterm.m:4571:7 [opt]
frame #3: 0x000000010004bab4 emacs`draw_glyphs(w=0x0000000112f01140,
x=917, row=<unavailable>, area=TEXT_AREA, start=<unavailable>,
end=<unavailable>, hl=DRAW_CURSOR, overlaps=0) at xdisp.c:31666:5 [opt]
frame #4: 0x00000001000501d1
emacs`draw_phys_cursor_glyph(w=0x0000000112f01140, row=0x0000000181f1e100,
hl=DRAW_CURSOR) at xdisp.c:34369:12 [opt]
frame #5: 0x000000010025c091
emacs`ns_draw_window_cursor(w=0x0000000112f01140,
glyph_row=0x0000000181f1e100, x=<unavailable>, y=<unavailable>,
cursor_type=<unavailable>, cursor_width=<unavailable>, on_p=<unavailable>,
active_p=true) at nsterm.m:3126:7 [opt]
frame #6: 0x0000000100050d78
emacs`display_and_set_cursor(w=0x0000000112f01140, on=true, hpos=0, vpos=1,
x=0, y=21) at xdisp.c:34637:5 [opt]
frame #7: 0x000000010000b71b
emacs`gui_update_window_end(w=0x0000000112f01140, cursor_on_p=true,
mouse_face_overwritten_p=true) at dispnew.c:4653:2 [opt]
frame #8: 0x000000010000a931 emacs`update_window(w=<unavailable>) at
dispnew.c:4587:3 [opt]
frame #9: 0x000000010000effc
emacs`update_window_tree(w=0x0000000112f01140) at dispnew.c:4234:2 [opt]
frame #10: 0x000000010000efbe
emacs`update_window_tree(w=0x0000000113224260) at dispnew.c:4232:2 [opt]
frame #11: 0x0000000100009257 emacs`update_frame [inlined]
update_window_frame(f=0x0000000102f41b70) at dispnew.c:3866:3 [opt]
frame #12: 0x00000001000091e3 emacs`update_frame(f=0x0000000102f41b70,
inhibit_scrolling=<unavailable>) at dispnew.c:4118:5 [opt]
frame #13: 0x0000000100037573 emacs`redisplay_internal at
xdisp.c:17736:5 [opt]
frame #14: 0x000000010003d0b6
emacs`redisplay_preserve_echo_area(from_where=9) at xdisp.c:18001:5 [opt]
frame #15: 0x00000001001eed97
emacs`wait_reading_process_output(time_limit=<unavailable>, nsecs=0,
read_kbd=<unavailable>, do_display=true, wait_for_cell=0x0000000000000000,
wait_proc=0x0000000000000000, just_wait_proc=0) at process.c:5457:3 [opt]
frame #16: 0x000000010000ca35 emacs`sit_for(timeout=<unavailable>,
reading=true, display_option=1) at dispnew.c:6979:7 [opt]
frame #17: 0x00000001000fefd1 emacs`read_char(commandflag=1,
map=0x000000010f3b77c3, prev_event=0x0000000000000000,
used_mouse_menu=0x00007ff7bfefc46f, end_time=0x0000000000000000) at
keyboard.c:2925:11 [opt]
frame #18: 0x00000001000fb4b4
emacs`read_key_sequence(keybuf=0x00007ff7bfefc560, prompt=<unavailable>,
dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true, prevent_redisplay=<unavailable>,
disable_text_conversion_p=<unavailable>) at keyboard.c:10848:12 [opt]
frame #19: 0x00000001000f9529 emacs`command_loop_1 at
keyboard.c:1424:15 [opt]
frame #20: 0x000000010019197b
emacs`internal_condition_case(bfun=(emacs`command_loop_1 at
keyboard.c:1319), handlers=0x0000000000000090, hfun=(emacs`cmd_error at
keyboard.c:965)) at eval.c:1684:25 [opt]
frame #21: 0x00000001000f915e
emacs`command_loop_2(handlers=0x0000000000000090) at keyboard.c:1163:11
[opt]
frame #22: 0x0000000100190e4f
emacs`internal_catch(tag=0x0000000000011ac0, func=(emacs`command_loop_2 at
keyboard.c:1159), arg=0x0000000000000090) at eval.c:1364:25 [opt]
frame #23: 0x0000000100288a58 emacs`command_loop.cold.1 at
keyboard.c:1141:2 [opt]
frame #24: 0x00000001000f89d4 emacs`command_loop at keyboard.c:1138:5
[opt]
frame #25: 0x00000001000f889f emacs`recursive_edit_1 at
keyboard.c:749:9 [opt]
frame #26: 0x00000001000f8b40 emacs`Frecursive_edit at keyboard.c:832:3
[opt]
frame #27: 0x00000001000f79dd emacs`main(argc=<unavailable>,
argv=0x00007ff7bfefcae0) at emacs.c:2582:3 [opt]
frame #28: 0x00000001004d152e dyld`start + 462
-Stephane
[Message part 4 (text/html, inline)]
[Message part 5 (message/rfc822, inline)]
> From: Stéphane Marks <shipmints <at> gmail.com>
> Date: Wed, 4 Jun 2025 12:34:24 -0400
> Cc: 78654 <at> debbugs.gnu.org, ben <at> bensimms.moe
>
> seems to have a thinko: it should say this instead:
>
> if (s->row->mouse_face_p
> && cursor_in_mouse_face_p (s->w))
> {
> face = FACE_FROM_ID_OR_NULL (s->f,
> MOUSE_HL_INFO (s->f)->mouse_face_face_id);
>
> if (!face) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
> prepare_face_for_display (s->f, face);
>
> Can you try that change?
>
> Making a normal build now. Will test today/tomorrow.
>
> So far, so good. I'll give it more time before declaring success. Thank you for the fast patch.
>
> I have not seen this recur. Would you prefer I submit a patch for this or would you handle this?
Thanks, I've now installed this on the master branch, and I'm closing
this bug.
This bug report was last modified 45 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.