bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#63495: 28.2; menu crashes on macos


From: Eshel Yaron
Subject: bug#63495: 28.2; menu crashes on macos
Date: Thu, 13 Jul 2023 09:16:51 +0300
User-agent: Gnus/5.13 (Gnus v5.13)

Alan Third <alan@idiocy.org> writes:

> Can you please try this:
>
> modified   src/nsmenu.m
> @@ -746,6 +746,8 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct 
> frame *)f
>    NSEvent *e, *event;
>    long retVal;
>  
> +  needsUpdate = NO;
> +
>    /* p = [view convertPoint:p fromView: nil]; */
>    p.y = NSHeight ([view frame]) - p.y;
>    e = [[view window] currentEvent];
>
> At a guess, when the menu opens the first thing AppKit does is check if
> it needs updated, and since a new menu starts with needsUpdate=YES, it
> goes ahead and tries to do it, which overwrites some important
> variables from the original "build" of the menu.
>
> The context menu is built and then displayed, as opposed to the
> top-menu that is partially built, then when it's to be displayed is
> updated and filled in.

I tried it, unfortunately, that doesn't seem to solve the issue.  Emacs
still crashes with a similar backtrace:

--8<---------------cut here---------------start------------->8---
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
(code=1, address=0x3)
    frame #0: 0x00000001000af1fd emacs`AREF(array=0x0000000000000000, idx=0) at 
lisp.h:1941:10
   1938 AREF (Lisp_Object array, ptrdiff_t idx)
   1939 {
   1940   eassert (0 <= idx && idx < gc_asize (array));
-> 1941   return XVECTOR (array)->contents[idx];
   1942 }
   1943
   1944 INLINE Lisp_Object *
Target 0: (emacs) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
(code=1, address=0x3)
  * frame #0: 0x00000001000af1fd emacs`AREF(array=0x0000000000000000, idx=0) at 
lisp.h:1941:10
    frame #1: 0x00000001000b079e 
emacs`find_and_return_menu_selection(f=0x00000001030b0c30, keymaps=true, 
client_data=0x0000000110277e60) at menu.c:985:11
    frame #2: 0x000000010037cc1a emacs`-[EmacsMenu 
runMenuAt:forFrame:keymaps:](self=0x000060000179c9c0, 
_cmd="runMenuAt:forFrame:keymaps:", p=(x = 2, y = 411), f=0x00000001030b0c30, 
keymaps=true) at nsmenu.m:769:9
    frame #3: 0x0000000100380ac0 emacs`ns_menu_show(f=0x00000001030b0c30, x=2, 
y=97, menuflags=1, title=0x0000000102416284, error=0x00007ff7bfefcef0) at 
nsmenu.m:1069:9
    frame #4: 0x00000001000b23f7 
emacs`x_popup_menu_1(position=0x0000000118583f83, menu=0x0000000118587313) at 
menu.c:1410:17
    frame #5: 0x00000001000b27d2 
emacs`Fx_popup_menu(position=0x0000000118583f83, menu=0x0000000118587313) at 
menu.c:1474:10
    frame #6: 0x000000010024e7d7 emacs`funcall_subr(subr=0x0000000100403c28, 
numargs=2, args=0x0000000118028188) at eval.c:3049:15
--8<---------------cut here---------------end--------------->8---


-- 
Best,

Eshel





reply via email to

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