Package: emacs;
Reported by: Rainer M Krug <Rainer <at> krugs.de>
Date: Mon, 7 Sep 2015 10:11:01 UTC
Severity: normal
Tags: moreinfo
Found in version 24.5
Fixed in version 25.1
Done: Alan Third <alan <at> idiocy.org>
Bug is archived. No further changes may be made.
Message #104 received at 21428 <at> debbugs.gnu.org (full text, mbox):
From: Rainer M Krug <Rainer <at> krugs.de> To: Eli Zaretskii <eliz <at> gnu.org> Cc: mituharu+bug-gnu-emacs-mac <at> math.s.chiba-u.ac.jp, 21428 <at> debbugs.gnu.org Subject: Re: bug#21428: 24.5; Crash of emacs on OS X, installed via homebrew cask Date: Fri, 25 Sep 2015 11:34:03 +0200
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes: >> From: Rainer M Krug <Rainer <at> krugs.de> >> Cc: 21428 <at> debbugs.gnu.org, mituharu+bug-gnu-emacs-mac <at> math.s.chiba-u.ac.jp >> Date: Thu, 24 Sep 2015 20:37:00 +0200 >> >> > It helps: the offending line seems to be the one that shows this: >> > >> > - [ ] ownFree >> > >> > with "ownFree" highlighted by a green underwave. Do you know what is >> > that underwave face? (If you don't, you could recreate the buffer in >> > a live session, then go to that place and type "M-x >> > describe-text-properties RET".) >> >> In the life session, I get the following: (as I continued some editing, >> the position might be off compared to the session which crashed) >> >> ,---- >> | Text content at position 34253: >> | >> | >> | There is an overlay here: >> | From 34252 to 34259 >> | evaporate t >> | face flyspell-duplicate >> | flyspell-overlay t >> | help-echo "mouse-2: correct word at point" >> | keymap [Show] >> | mouse-face highlight > > OK, so the face is flyspell-duplicate. > >> ,---- >> | Face: flyspell-duplicate (sample) (customize this face) >> | >> | Documentation: >> | Flyspell face for words that appear twice in a row. >> | See also ‘flyspell-duplicate-distance’. >> | >> | Defined in ‘flyspell.el’. >> | >> | Family: unspecified >> | Foundry: unspecified >> | Width: unspecified >> | Height: unspecified >> | Weight: unspecified >> | Slant: unspecified >> | Foreground: unspecified >> | DistantForeground: unspecified >> | Background: unspecified >> | Underline: (:style wave :color #008000) >> | Overline: unspecified >> | Strike-through: unspecified >> | Box: unspecified >> | Inverse: unspecified >> | Stipple: unspecified >> | Font: unspecified >> | Fontset: unspecified >> | Inherit: nil >> | >> | [back] >> `---- >> >> Anything strange here? > > No, looks perfectly OK. The problem is not with the face itself, it's > with its "realization" and caching by the display engine. > >> I leave the session as it is to provide further info. > > Actually, I think we've got all the info I need at this point. > > We now need to repeat this procedure in another 2 or 3 similar > crashes: display the face ID, the "used" count of the frame's face > cache, then use "pgrow" in the call-stack frame that calls the > 'draw_glyphs' function, to show the text to be displayed in that face, > and finally see which face it is in a "live" display. Maybe we will > see some pattern common to all those cases, although I'm starting to > doubt that. OK - new crash: I updated this morning from git and recompiled. This time it is face #42 and it seems to be in the bar above the minibuffer (mode-line)??? The character look like mode-bar, but I can't see them anywhere. I also attach again a screenshot.
[Screenshot 2015-09-25 11.14.53.png (image/png, attachment)]
[Message part 3 (text/plain, inline)]
,---- | xdisp.c:24333: Emacs fatal error: assertion failed: face != NULL | | Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370 | 370 signal (sig, SIG_DFL); | (gdb) bt | #0 terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370 | #1 0x000000010022569b in die (msg=0x1003b680a "face != NULL", file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951 | #2 0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333 | #3 0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, start=0, end=23, overlaps=0) at xdisp.c:24558 | #4 0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25225 | #5 0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at xdisp.c:27256 | #6 0x0000000100011d48 in update_text_area (w=0x1020bfbe0, updated_row=0x11254d100, vpos=1) at dispnew.c:3611 | #7 0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854 | #8 0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at dispnew.c:3477 | #9 0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at dispnew.c:3219 | #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at dispnew.c:3217 | #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3108 | #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815 | #13 0x0000000100053a79 in redisplay () at xdisp.c:13059 | #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465 | #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030 | #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348 | #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 <command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309 | #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088 | #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 <command_loop_2>, arg=0) at eval.c:1073 | #20 0x000000010017c890 in command_loop () at keyboard.c:1067 | #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673 | #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744 | #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643 | Current language: auto; currently minimal | | Lisp Backtrace: | "redisplay_internal (C function)" (0x0) | (gdb) bt full | #0 terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370 | No locals. | #1 0x000000010022569b in die (msg=0x1003b680a "face != NULL", file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951 | No locals. | #2 0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333 | face = (struct face *) 0x0 | code = 0 | #3 0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, start=0, end=23, overlaps=0) at xdisp.c:24558 | glyph = (struct glyph *) 0x11253ae00 | last = (struct glyph *) 0x11253b250 | voffset = 0 | glyph_not_available_p = false | #4 0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25225 | face_id = 42 | char2b = (XChar2b *) 0x7fff5fbfb690 | first_glyph = (struct glyph *) 0x11253ae00 | head = (struct glyph_string *) 0x7fff5fbfb6c0 | tail = (struct glyph_string *) 0x7fff5fbfb6c0 | s = (struct glyph_string *) 0x7fff5fbfb6c0 | clip_head = (struct glyph_string *) 0x0 | clip_tail = (struct glyph_string *) 0x0 | i = 0 | j = 1519899 | x_reached = 32767 | last_x = 1256 | area_left = 8 | f = (struct frame *) 0x10644a830 | sa_avail = 16338 | sa_count = 5 | sa_must_free = false | #5 0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at xdisp.c:27256 | x = 16777216 | hpos = 0 | chpos = 16 | #6 0x0000000100011d48 in update_text_area (w=0x1020bfbe0, updated_row=0x11254d100, vpos=1) at dispnew.c:3611 | current_row = (struct glyph_row *) 0x11246bf00 | desired_row = (struct glyph_row *) 0x11254d100 | rif = (struct redisplay_interface *) 0x1007d8e98 | changed_p = false | #7 0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854 | current_row = (struct glyph_row *) 0x11246bf00 | desired_row = (struct glyph_row *) 0x11254d100 | rif = (struct redisplay_interface *) 0x1007d8e98 | changed_p = false | #8 0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at dispnew.c:3477 | vpos = 1 | i = 139313 | end = (struct glyph_row *) 0x112555100 | mode_line_row = (struct glyph_row *) 0x112555100 | header_line_row = (struct glyph_row *) 0x11254d000 | changed_p = false | mouse_face_overwritten_p = false | row = (struct glyph_row *) 0x11254d100 | yb = 1402 | n_updated = 0 | desired_matrix = (struct glyph_matrix *) 0x111951a70 | paused_p = false | preempt_count = 17 | rif = (struct redisplay_interface *) 0x1007d8e98 | #9 0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at dispnew.c:3219 | paused_p = false | #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at dispnew.c:3217 | paused_p = false | #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3108 | paused_p = 255 | root_window = (struct window *) 0x10655ed10 | #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815 | gcscrollbars = true | f = (struct frame *) 0x10644a830 | w = (struct window *) 0x1020bfbe0 | sw = (struct window *) 0x1020bfbe0 | fr = (struct frame *) 0x10644a830 | pending = false | must_finish = true | match_p = true | tlbufpos = { | charpos = 1, | bytepos = 1 | } | tlendpos = { | charpos = 247, | bytepos = 247 | } | number_of_visible_frames = 1 | count = 2 | sf = (struct frame *) 0x10644a830 | polling_stopped_here = true | tail = 4599117875 | frame = 4400130101 | consider_all_windows_p = true | update_miniwindow_p = true | #13 0x0000000100053a79 in redisplay () at xdisp.c:13059 | No locals. | #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465 | echo_current = true | c = 0 | jmpcount = 140734799801360 | local_getcjmp = 0x7fff5fbfeba0 | save_jump = 0x7fff5fbfeb00 | tem = 2 | save = 0 | previous_echo_area_message = 0 | also_record = 0 | reread = false | recorded = false | polling_stopped_here = false | orig_kboard = (struct kboard *) 0x101146020 | #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030 | interrupted_kboard = (KBOARD *) 0x101146020 | interrupted_frame = (struct frame *) 0x10644a830 | key = 4297289629 | used_mouse_menu = false | echo_local_start = 0 | last_real_key_start = 0 | keys_local_start = 0 | new_binding = 4317771765 | count = 2 | t = 0 | echo_start = 0 | keys_start = 0 | current_binding = 4801369587 | first_event = 0 | first_unbound = 31 | mock_input = 0 | fkey = { | parent = 4404141299, | map = 4404141299, | start = 0, | end = 0 | } | keytran = { | parent = 4336943683, | map = 4336943683, | start = 0, | end = 0 | } | indec = { | parent = 4404141363, | map = 4404141363, | start = 0, | end = 0 | } | shift_translated = false | delayed_switch_frame = 0 | original_uppercase = 4303326104 | original_uppercase_position = -1 | dummyflag = false | starting_buffer = (struct buffer *) 0x1015bf7f0 | fake_prefixed_keys = 0 | #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348 | cmd = 101117088 | keybuf = 0x7fff5fbff2f0 | i = 2 | prev_modiff = 50091 | prev_buffer = (struct buffer *) 0x11475fbc0 | already_adjusted = false | #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 <command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309 | val = 4303299704 | c = (struct handler *) 0x104a00000 | #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088 | val = 2 | #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 <command_loop_2>, arg=0) at eval.c:1073 | val = 0 | c = (struct handler *) 0x101037aa0 | #20 0x000000010017c890 in command_loop () at keyboard.c:1067 | No locals. | #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673 | count = 1 | val = 0 | #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744 | count = 0 | buffer = 0 | #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643 | dummy = 140734799806464 | stack_bottom_variable = 0 '\0' | do_initial_setlocale = true | dumping = false | skip_args = 0 | rlim = { | rlim_cur = 8720000, | rlim_max = 67104768 | } | no_loadup = false | junk = 0x0 | dname_arg = 0x0 | dname_arg2 = 0x7fff5fbff870 "\001" | ch_to_dir = 0x0 | original_pwd = 0x0 | | Lisp Backtrace: | "redisplay_internal (C function)" (0x0) | (gdb) bt | #0 terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370 | #1 0x000000010022569b in die (msg=0x1003b680a "face != NULL", file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951 | #2 0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333 | #3 0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, start=0, end=23, overlaps=0) at xdisp.c:24558 | #4 0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25225 | #5 0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at xdisp.c:27256 | #6 0x0000000100011d48 in update_text_area (w=0x1020bfbe0, updated_row=0x11254d100, vpos=1) at dispnew.c:3611 | #7 0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854 | #8 0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at dispnew.c:3477 | #9 0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at dispnew.c:3219 | #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at dispnew.c:3217 | #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3108 | #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815 | #13 0x0000000100053a79 in redisplay () at xdisp.c:13059 | #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465 | #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030 | #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348 | #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 <command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309 | #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088 | #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 <command_loop_2>, arg=0) at eval.c:1073 | #20 0x000000010017c890 in command_loop () at keyboard.c:1067 | #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673 | #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744 | #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643 | | Lisp Backtrace: | "redisplay_internal (C function)" (0x0) | (gdb) frame 2 | #2 0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333 | 24333 eassert (face != NULL); | (gdb) p f->face-caches->used | No symbol "caches" in current context. | (gdb) p f->face_cache->used | $1 = 31 | (gdb) pgrow | No symbol "row" in current context. | (gdb) source ./.gdbinit | DISPLAY = /private/tmp/com.apple.launchd.x7OsOx87fJ/org.macosforge.xquartz:0 | TERM = xterm | Breakpoint 3 at 0x100178ac2: file emacs.c, line 370. | Breakpoint 4 at 0x1001b157f: file sysdep.c, line 907. | (gdb) pgrow | No symbol "row" in current context. | (gdb) frame 3 | #3 0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, start=0, end=23, overlaps=0) at xdisp.c:24558 | 24558 s->face = get_glyph_face_and_encoding (s->f, glyph, | (gdb) pgrow | No symbol "row" in current context. | (gdb) frame 4 | #4 0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25225 | 25225 BUILD_GLYPH_STRINGS (i, end, head, tail, hl, x, last_x); | (gdb) pgrow | TEXT: 23 glyphs | 0 0: CHAR[#] pos=1 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 1 8: CHAR[ ] pos=2 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 2 16: CHAR[ ] pos=3 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 3 24: CHAR[ ] pos=4 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 4 32: CHAR[ ] pos=5 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 5 40: CHAR[-] pos=6 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 6 48: CHAR[*] pos=7 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 7 56: CHAR[-] pos=8 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 8 64: CHAR[ ] pos=9 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 9 72: CHAR[m] pos=10 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 10 80: CHAR[o] pos=11 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 11 88: CHAR[d] pos=12 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 12 96: CHAR[e] pos=13 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 13 104: CHAR[:] pos=14 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 14 112: CHAR[ ] pos=15 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 15 120: CHAR[o] pos=16 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 16 128: CHAR[r] pos=17 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 17 136: CHAR[g] pos=18 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 18 144: CHAR[ ] pos=19 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 19 152: CHAR[-] pos=20 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 20 160: CHAR[*] pos=21 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 21 168: CHAR[-] pos=22 blev=0,btyp=L w=8 a+d=14+4 face=42 MB | 22 176: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=14+4 MB | (gdb) xbacktrace | "redisplay_internal (C function)" (0x0) | (gdb) `---- > > Thanks. > -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer <at> krugs.de Skype: RMkrug PGP: 0x0F52F982
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.