Subject: Re: bug#59733: 29.0.50; unrespnsive Xaw menus

From: Madhu <[email-masked]>
Date: Sun, 04 Dec 2022 10:54:22 +0530 (IST)

*  Po Lu <[email-masked]>
Wrote on Fri, 02 Dec 2022 09:04:39 +0800
> Well, could you please do what I asked in the other reports?  Namely, to
> put a breakpoint on the call to XtGrabKeyboard on xlwmenu.c, and see
> what it returns, from another machine?

[Maybe this can be done on the same machine with xpra. Right now I'm
set up walking between two rooms...  it's tricky as the frame display
can lock up and the process has to be killed.]

(gdb) r
Starting program: /12/build/emacs/build-xt/src/emacs -Q
(gdb) sharedlib libXaw
(gdb) sharedlib libX11
(gdb) b xlwmenu.c:2879
Breakpoint 3 at 0x68f973: file ../../lwlib/xlwmenu.c, line 2879.
(gdb) c
Continuing.
Thread 1 "emacs" hit Breakpoint 3, pop_up_menu (event=0xea2ba0, mw=0xfc5fa0) at ../../lwlib/xlwmenu.c:2879
2879      if (XtGrabPointer ((Widget)mw, False,
(gdb) s
XtGrabPointer (widget=widget@entry=0xfc5fa0, owner_events=owner_events@entry=0 '\000', event_mask=event_mask@entry=204, pointer_mode=pointer_mode@entry=1, keyboard_mode=keyboard_mode@entry=1, confine_to=confine_to@entry=0, cursor=33554483, time=224367550) at /usr/src/debug/x11-libs/libXt-1.2.1/libXt-1.2.1/src/PassivGrab.c:993
993         WIDGET_TO_APPCON(widget);
(gdb) s
(gdb) finish
Run till exit from #0  XGrabPointer (dpy=0xdf4980,
    grab_window=33554493, owner_events=owner_events@entry=0,
    event_mask=event_mask@entry=204,
    pointer_mode=pointer_mode@entry=1,
    keyboard_mode=keyboard_mode@entry=1, confine_to=0, curs=33554483,
    time=224367550)
    at /usr/src/debug/x11-libs/libX11-1.8.1/libX11-1.8.1/src/GrPointer.c:47
GrabDevice (widget=widget@entry=0xfc5fa0, owner_events=owner_events@entry=0 '\000', pointer_mode=pointer_mode@entry=1, keyboard_mode=1, event_mask=event_mask@entry=204, confine_to=0, cursor=33554483, time=224367550, isKeyboard=0 '\000') at /usr/src/debug/x11-libs/libXt-1.2.1/libXt-1.2.1/src/PassivGrab.c:895
895         if (returnVal == GrabSuccess) {
Value returned is $2 = 0

The upshot is XtGrabPointer returns 0 and the menu becomes unresponsive[1]

When it works, i.e. when XtGrabPointer returns True, It seems I'm not
able to step into XtGrabPointer as `s' puts me on the next line of
pop_up_menu.

This is a heads up, if you have further instructions.

PS (can the typo in the Subject line be fixed)