On Sat, May 31, 2025 at 5:53 PM Ship Mints wrote: > On Sat, May 31, 2025 at 5:47 PM Ship Mints wrote: > >> 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=, area=TEXT_AREA, start=, >> end=, 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=, y=, >> cursor_type=, cursor_width=, on_p=, >> 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=) 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=) >> 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=, nsecs=0, >> read_kbd=, 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=, >> 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=, >> dont_downcase_last=false, can_return_switch_frame=true, >> fix_current_buffer=true, prevent_redisplay=, >> disable_text_conversion_p=) 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=, >> argv=0x00007ff7bfefcae0) at emacs.c:2582:3 [opt] >> frame #28: 0x00000001004d152e dyld`start + 462 >> > > Same result without images so it's not that. I'll see if I can narrow > this down more. > Adding the line in question, according to lldb (this is not a debug build, I guess I'll rebuild with debug next): * 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=0x0000000103566770, face=0x0000000000000000) at xfaces.c:4657:16 [opt] 4654 4655 eassert (FRAME_WINDOW_P (f)); 4656 -> 4657 if (face->gc == 0) 4658 { 4659 mask = GCForeground | GCBackground | GCGraphicsExposures; 4660