emacs-devel
[Top][All Lists]
Advanced

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

Re: 29.0.50 master freeze on macOS


From: Alexander Adolf
Subject: Re: 29.0.50 master freeze on macOS
Date: Tue, 19 Jul 2022 17:27:14 +0200

Hello Eli,

Eli Zaretskii <eliz@gnu.org> writes:

> [...]
> Please follow the instructions in etc/DEBUG under "If the symptom of
> the bug is that Emacs fails to respond", to establish where Emacs
> infloops.

Some more findings based on that guidance (for which thanks, btw):

It loops in face_inherited_attr(). Here is the call stack:

#0      0x00000001018f32db in face_inherited_attr at 
/Users/alexanderadolf/Projects/emacs/master/src/xfaces.c:2335
#1      0x00000001018f2297 in merge_named_face at 
/Users/alexanderadolf/Projects/emacs/master/src/xfaces.c:2379
#2      0x00000001018ee57d in merge_face_ref at 
/Users/alexanderadolf/Projects/emacs/master/src/xfaces.c:2866
#3      0x00000001018f169a in face_at_buffer_position at 
/Users/alexanderadolf/Projects/emacs/master/src/xfaces.c:6644
#4      0x0000000101866526 in face_at_pos at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:4425
#5      0x000000010186c47a in extend_face_to_end_of_line at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:22840
#6      0x0000000101849164 in display_line at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:24780
#7      0x0000000101846fb9 in try_window at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:20203
#8      0x0000000101873ef7 in redisplay_window at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:19610
#9      0x00000001018708e6 in redisplay_window_0 at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:17188
#10     0x000000010199042b in internal_condition_case_1 at 
/Users/alexanderadolf/Projects/emacs/master/src/eval.c:1509
#11     0x000000010186ff75 in redisplay_windows at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:17158
#12     0x000000010186ffaa in redisplay_windows at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:17152
#13     0x00000001018407fc in redisplay_internal at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:16608
#14     0x0000000101846115 in redisplay at 
/Users/alexanderadolf/Projects/emacs/master/src/xdisp.c:15812
#15     0x00000001018fc0e5 in read_char at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:2587
#16     0x00000001018f945b in read_key_sequence at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:9984
#17     0x00000001018f74bc in command_loop_1 at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:1382
#18     0x00000001019903a7 in internal_condition_case at 
/Users/alexanderadolf/Projects/emacs/master/src/eval.c:1485
#19     0x00000001018f70ae in command_loop_2 at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:1132
#20     0x000000010198fc61 in internal_catch at 
/Users/alexanderadolf/Projects/emacs/master/src/eval.c:1208
#21     0x0000000101a83d78 in recursive_edit_1.cold.1 at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:1110
#22     0x00000001018f695d in command_loop [inlined] at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:1107
#23     0x00000001018f6958 in recursive_edit_1 at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:719
#24     0x00000001018f6ad3 in Frecursive_edit at 
/Users/alexanderadolf/Projects/emacs/master/src/keyboard.c:802
#25     0x00000001018f5a81 in main at 
/Users/alexanderadolf/Projects/emacs/master/src/emacs.c:2517
#26     0x00007fff20875f3d in start ()

In face_inherited_attr(), variable values were:

w       window *        NULL    
f       frame * NULL    
attrs   Lisp_Object *   NULL    
attr_idx        lface_attribute_index   LFACE_EXTEND_INDEX
named_merge_points      named_merge_point *     0x7ffeee3e9018  
0x00007ffeee3e9018
inherited_attrs Lisp_Object [20]        
attr_val        Lisp_Object     0xf3f0  0x000000000000f3f0

Inside the while() loop, the if (CONSP (parent_face)) fails, and it
executes the else branch. From there, it calls 

get_lface_attributes (struct window *w,
                      struct frame *f, Lisp_Object face_name,
                      Lisp_Object attrs[LFACE_VECTOR_SIZE], bool signal_p,
                      struct named_merge_point *named_merge_points)

which executes the “default case, no remapping” path.

Interestingly, the window and frame pointers are NULL in the context of
face_inherited_attr() only. I.e. in both the function that calls it
(merge_named_face()), and in the function called by it
(get_lface_attributes()), the pointers have the same, non-NULL value.

Hope this helps? If you want me to look into more specific things next
time it happens, please don't hesitate to drop me a note.


Many thanks and looking forward to your thoughts,

  --alexander



reply via email to

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