Can you try this (subtracting 5 from the tagged pointer to get the base
pointer, then printing its memory region):

     x/32gx 0x98e79d8
     x/32gx 0x98f1d08

(gdb) x/32gx 0x98e79d8
0x98e79d8:      0xc00000000e008000      0x0000000020e10970
0x98e79e8:      0x0000000003aa20d0      0x0000000003aa1ac0
0x98e79f8:      0x00000000006e9960      0x000000002265f480
0x98e7a08:      0x0000001a0000001a      0x0000400700000060
0x98e7a18:      0x0000000000000000      0x400000000e008000
0x98e7a28:      0x000000001bfdbe90      0x0000000020e10b80
0x98e7a38:      0x000000001bfdb880      0x00000000006e98e0
0x98e7a48:      0x000000001fd792e0      0x0000001a0000001a
0x98e7a58:      0x0000400700000060      0x0000000000000000
0x98e7a68:      0x400000001f000005      0x0000000000000606
0x98e7a78:      0x0000000008ae5654      0x000000001b78fe2d
0x98e7a88:      0x0000000000000012      0x0000000008ae5674
0x98e7a98:      0x400000001f000005      0x0000000000000606
0x98e7aa8:      0x0000000008ae5694      0x000000001c32b8dd
0x98e7ab8:      0x000000000000000e      0x0000000008ae5674
0x98e7ac8:      0x000000000000000e      0x000015554de5d450
(gdb) x/32gx 0x98f1d08
0x98f1d08:      0x8000000000000002      0x0000000000000000
0x98f1d18:      0x400000002300000d      0x0000000000000000
0x98f1d28:      0x0000000003eaec10      0x00000000019e1500
0x98f1d38:      0x0000000000000000      0x000000000000b640
0x98f1d48:      0x0000000000000000      0x0000000000019082
0x98f1d58:      0x0000000000019102      0x000000000000004e
0x98f1d68:      0x0000000000000000      0x0000000000000192
0x98f1d78:      0x0000000000000002      0x0000000000000000
0x98f1d88:      0x400000002300000d      0x0000000000000000
0x98f1d98:      0x0000000003eaec10      0x00000000019e1500
0x98f1da8:      0x0000000000000000      0x000000000000b640
0x98f1db8:      0x0000000000000000      0x0000000000019082
0x98f1dc8:      0x0000000000019102      0x000000000000004e
0x98f1dd8:      0x0000000000000000      0x0000000000000192
0x98f1de8:      0x0000000000000002      0x0000000000000000
0x98f1df8:      0x400000002300000d      0x0000000000000000
(gdb)


Let me know if you need anything further!

Thanks!
George

On Sat, May 17, 2025 at 4:52 AM Pip Cet <pipcet@protonmail.com> wrote:
"George P" <georgepanagopo@gmail.com> writes:

> No worries, happy to provide as much info as I can. Unfortunately, gdb shows XVECTOR as not defined, and I am not sure what the right code to run
> for my platform should be.
>
> (gdb) p *XVECTOR(0x98e79dd)
> No symbol "XVECTOR" in current context.

Can you try this (subtracting 5 from the tagged pointer to get the base
pointer, then printing its memory region):

     x/32gx 0x98e79d8
     x/32gx 0x98f1d08

> (gdb) x/77gx 0x15554f39bca8

Unfortunately, I don't see any overlap between that and the last_marked
entries.  Might have worked with an even larger LAST_MARKED_SIZE.

> (gdb) p terminal_list->display_info
> $1 = {tty = 0x7f3ed10, x = 0x7f3ed10, w32 = 0x7f3ed10, ns = 0x7f3ed10, pgtk = 0x7f3ed10, haiku = 0x7f3ed10, android = 0x7f3ed10}
> (gdb) p *terminal_list->display_info.x
>   Xatom_LINE_NUMBER = 399, Xatom_COLUMN_NUMBER = 400, Xatom_OWNER_OS = 401, Xatom_HOST_NAME = 402, Xatom_USER = 403,
> Xatom_CLASS = 404, Xatom_NAME = 405, Xatom_SAVE_TARGETS = 406, x_focus_frame = 0x13cea00, x_focus_event_frame = 0x13cea00,
> highlight_frame = 0x13cea00, x_pending_autoraise_frame = 0x0, last_mouse_frame = 0x13cea00, last_mouse_glyph_frame = 0x0,
> last_mouse_motion_frame = 0x13cea00,
>   last_mouse_scroll_bar = 0x0, last_user_time = 2180587218, last_mouse_motion_x = 308, last_mouse_motion_y = 1144, last_mouse_glyph = {x =

No dangling pointers here, as far as I can see.

>  Can you say more about that?  Are you running using a remote X server,
>  or some kind of tunnel setup, or is this some sort of WSL or VM setup?
>  It's relevant because remote X sessions have very different timing
>  characteristics, and different code for determining mouse positions is
>  in use.
>
> This is not WSL or VM. I use PUTTY on Windows 10 to connect to a remote Linux host (which is running the emacs daemon), and then I open the
> emacs frame (emacsclient) with X forwarding using Cygwin/X.

Thank you, that makes sense!

Pip