GNU bug report logs - #63614
29.0.91; PGTK Emacs crashes after clearing the clipboard

Previous Next

Package: emacs;

Reported by: Leonardo Hernández <leohdz172 <at> proton.me>

Date: Sat, 20 May 2023 19:51:01 UTC

Severity: normal

Found in version 29.0.91

To reply to this bug, email your comments to 63614 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Sat, 20 May 2023 19:51:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Leonardo Hernández <leohdz172 <at> proton.me>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 20 May 2023 19:51:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández <leohdz172 <at> proton.me>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.91; PGTK Emacs crashes after clearing the clipboard
Date: Sat, 20 May 2023 18:52:31 +0000
Hello, I have been having issues with crashes running Emacs with PGTK
on Wayland.

To reproduce, open `emacs -Q`, then copy whatever you want with <M-w> or
<C-w> and then copy another thing outside Emacs, for example, `wl-copy
<<< "Copied text"`, then Emacs crashes.

Backtrace:
#0 0x00007f92636ac8ec in () at /usr/lib64/libc.so.6
#1 0x00007f926365d3e2 in raise () at /usr/lib64/libc.so.6
#2 0x0000563f0697d0a5 in terminate_due_to_signal (sig=11, 
backtrace_limit=<optimized out>) at emacs.c:464
#3 0x0000563f0697def8 in handle_fatal_signal (sig=11) at sysdep.c:1783
fatal = <optimized out>
#4 deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
fatal = <optimized out>
#5 deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
fatal = <optimized out>
#6 handle_sigsegv (sig=11, siginfo=0x563f072243f0 <sigsegv_stack+64496>, 
arg=<optimized out>) at sysdep.c:1888
fatal = <optimized out>
#7 0x00007f926365d490 in <signal handler called> () at /usr/lib64/libc.so.6
#8 0x0000563f06c49d89 in pgtk_handle_selection_clear (event=<optimized 
out>) at pgtkselect.c:742
selection = <optimized out>
changed_owner_time = 0
selection_symbol = <optimized out>
local_selection_data = <optimized out>
local_selection_time = <optimized out>
dpyinfo = 0x90c1b80
Vselection_alist = <optimized out>
#9 0x0000563f06a9a5c6 in pgtk_handle_selection_event 
(event=0x7fff20369bc0) at pgtkselect.c:782
event = 0x563f071d44a0 <kbd_buffer+1344>
copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 
0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
moved_events = <optimized out>
#10 process_special_events () at keyboard.c:4449
event = 0x563f071d44a0 <kbd_buffer+1344>
copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 
0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
moved_events = <optimized out>
#11 0x0000563f06a9b7cd in swallow_events (do_display=true) at 
keyboard.c:4489
old_timers_run = <optimized out>
#12 0x0000563f06bc2c0c in wait_reading_process_output 
(time_limit=<optimized out>, nsecs=<optimized out>, read_kbd=<optimized 
out>, do_display=<optimized out>, wait_for_cell=<optimized out>, 
wait_proc=<optimized out>, just_wait_proc=<optimized out>) at 
process.c:5781
leave = false
wrapped = <optimized out>
process_skipped = <optimized out>
channel_start = <optimized out>
child_fd = <optimized out>
channel = <optimized out>
nfds = <optimized out>
Available = {fds_bits = {16, 0 <repeats 15 times>}}
Writeok = {fds_bits = {0 <repeats 16 times>}}
check_write = true
check_delay = <optimized out>
no_avail = false
xerrno = 11
proc = <optimized out>
timeout = {tv_sec = 0, tv_nsec = 0}
end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
timer_delay = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
got_output_end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
wait = <optimized out>
got_some_output = <optimized out>
prev_wait_proc_nbytes_read = <optimized out>
retry_for_async = <optimized out>
count = {bytes = <optimized out>}
now = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
last_read_channel = 17
#13 0x0000563f06997b20 in sit_for (timeout=<optimized out>, 
reading=<optimized out>, display_option=<optimized out>) at dispnew.c:6264
sec = 30
nsec = 0
do_display = <optimized out>
curbuf_eq_winbuf = true
nbytes = <optimized out>
#14 0x0000563f06aa40d5 in read_char (commandflag=1, map=0x563f09b61013, 
prev_event=0x0, used_mouse_menu=0x7fff2036a6bb, end_time=0x0) at 
keyboard.c:2881
delay_level = <optimized out>
buffer_size = <optimized out>
c = 0x0
local_getcjmp = {{__jmpbuf = {94828702059008, -8807486309767267314, 1, 
94828736677880, 0, 94828745980467, -8807486309702255602, 
-3006776290544272370}, __mask_was_saved = 0, __saved_mask = {__val = 
{94828696057600, 140266600468637, 66, 140266600466355, 94828696063071, 
140266600468637, 40080, 140733733840032, 0, 0, 94828736677885, 0, 
94828745829971, 0, 16, 17}}}}
save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, 
__saved_mask = {__val = {0 <repeats 16 times>}}}}
tem = <optimized out>
save = <optimized out>
previous_echo_area_message = 0x0
also_record = 0x0
reread = false
recorded = false
polling_stopped_here = false
orig_kboard = 0x563f08f43c30
#15 0x0000563f06c620d7 in read_key_sequence.constprop.0 
(keybuf=<optimized out>, prevent_redisplay=false, 
fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized 
out>, dont_downcase_last=<optimized out>, prompt=<optimized out>) at 
keyboard.c:10083
interrupted_kboard = 0x563f08f43c30
key = <optimized out>
used_mouse_menu = false
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
new_binding = <optimized out>
t = 0
echo_start = 0
keys_start = 0
current_binding = 0x563f09b61013
first_unbound = 31
mock_input = 0
used_mouse_menu_history = {false <repeats 30 times>}
fkey = {parent = 0x563f08e6f3d3, map = 0x563f08e6f3d3, start = 0, end = 0}
keytran = {parent = 0x7f925d6191eb, map = 0x7f925d6191eb, start = 0, end 
= 0}
indec = {parent = 0x563f08e6f4a3, map = 0x563f08e6f4a3, start = 0, end = 0}
shift_translated = <optimized out>
delayed_switch_frame = <optimized out>
original_uppercase = <optimized out>
original_uppercase_position = <optimized out>
dummyflag = false
fake_prefixed_keys = 0x0
first_event = 0x0
second_event = <optimized out>
#16 0x0000563f06a9776a in command_loop_1 () at keyboard.c:1384
cmd = <optimized out>
keybuf = {0x200001de, 0x1a, 0x7fff2036a8f0, 0x2, 0x295355bfea70, 
0x7f925cf00a7d, 0x0, 0x563f06c6728d <run_hook_with_args.constprop.0+45>, 
0x1, 0x1, 0x1, 0x7fff2036a950, 0x7fff2036a8c0, 0x563f0722f000 <freloc>, 
0x563f06ca0314, 0x7f92636ba48c, 0x295355ba8688, 0x981baf1862a21b00, 
0x9510, 0x563f06ca6dc0, 0x7fff2036a980, 0x60, 0x563f08fd28d4, 0x0, 
0x563f06d19020 <main_thread.lto_priv>, 0x563f06a954a5 <top_level_2+725>, 
0x563f06ca0314, 0x7f92636baf12 <malloc+434>, 0x563f06ca0314, 0x30}
i = <optimized out>
prev_modiff = 6
prev_buffer = 0x563f092a07f8
#17 0x0000563f06b4cc67 in internal_condition_case (bfun=0x563f06a974a0 
<command_loop_1>, handlers=<optimized out>, hfun=0x563f06a94f00 
<cmd_error>) at eval.c:1474
val = <optimized out>
c = 0x563f08f8c370
#18 0x0000563f06a951be in command_loop_2 (handlers=handlers <at> entry=0x90) 
at keyboard.c:1133
val = <optimized out>
#19 0x0000563f06b4cbbc in internal_catch (tag=<optimized out>, 
func=0x563f06a95190 <command_loop_2>, arg=0x90) at eval.c:1197
val = <optimized out>
c = 0x563f08f8c240
#20 0x0000563f06a96f89 in command_loop () at keyboard.c:1111
#21 0x0000563f06c95c30 in recursive_edit_1.isra.0 () at keyboard.c:720
val = <optimized out>
#22 0x0000563f06a9746c in Frecursive_edit () at keyboard.c:803
buffer = <optimized out>
#23 0x0000563f0698b274 in main (argc=<optimized out>, 
argv=0x7fff2036adc8) at emacs.c:2529
stack_bottom_variable = 0x0
no_loadup = false
junk = 0x0
dname_arg = 0x0
ch_to_dir = 0x0
original_pwd = 0x0
dump_mode = <optimized out>
skip_args = 0
temacs = 0x0
attempt_load_pdump = <optimized out>
only_version = false
rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
lc_all = <optimized out>
sockfd = -1
module_assertions = <optimized out>



In GNU Emacs 29.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.37, cairo version 1.17.8) of 2023-05-20 built on localhost
Repository revision: f571e8f1bb678c52839180e450c2415b31a70516
Repository branch: emacs-29
System Description: Gentoo Linux

Configured using:
'configure --prefix=/usr --build=x86_64-pc-linux-gnu
--host=x86_64-pc-linux-gnu --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --datarootdir=/usr/share
--disable-silent-rules --docdir=/usr/share/doc/emacs-29.0.9999-r1
--htmldir=/usr/share/doc/emacs-29.0.9999-r1/html --libdir=/usr/lib64
--program-suffix=-emacs-29-vcs --includedir=/usr/include/emacs-29-vcs
--infodir=/usr/share/info/emacs-29-vcs --localstatedir=/var
--enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
--without-compress-install --without-hesiod --without-pop
--with-file-notification=inotify --with-pdumper --enable-acl
--with-dbus --with-modules --without-gameuser --with-libgmp --with-gpm
--with-native-compilation=aot --with-json --without-kerberos
--without-kerberos5 --with-lcms2 --with-xml2 --with-mailutils
--without-selinux --with-sqlite3 --with-gnutls --without-libsystemd
--with-threads --with-tree-sitter --without-wide-int --with-sound=alsa
--with-zlib --with-pgtk --without-x --without-ns
--with-toolkit-scroll-bars --without-gconf --with-gsettings
--with-harfbuzz --without-libotf --without-m17n-flt --without-xwidgets
--with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-webp
--with-imagemagick --with-dumping=pdumper --with-cairo
'CFLAGS=-march=native -O3 -pipe -flto=auto -Werror=odr
-Werror=strict-aliasing -Werror=lto-type-mismatch -g3 -ggdb3 -gdwarf-4'
'LDFLAGS=-Wl,-O1 -Wl,--as-needed -Wl,-O2''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
value of $LC_MONETARY: es_MX.UTF-8
value of $LC_NUMERIC: es_MX.UTF-8
value of $LC_TIME: es_MX.UTF-8
value of $LANG: en_US.utf8
locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
buffer-read-only: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/pgtk-win pgtk-win term/common-win pgtk-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 77298 7908)
(symbols 48 7106 0)
(strings 32 19506 1667)
(string-bytes 1 590407)
(vectors 16 15625)
(vector-slots 8 327135 8165)
(floats 8 27 46)
(intervals 56 405 0)
(buffers 984 12))





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Sun, 21 May 2023 00:52:02 GMT) Full text and rfc822 format available.

Message #8 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Sun, 21 May 2023 08:51:30 +0800
Leonardo Hernández <leohdz172 <at> proton.me> writes:

> Hello, I have been having issues with crashes running Emacs with PGTK
> on Wayland.
>
> To reproduce, open `emacs -Q`, then copy whatever you want with <M-w> or
> <C-w> and then copy another thing outside Emacs, for example, `wl-copy
> <<< "Copied text"`, then Emacs crashes.
>
> Backtrace:
> #0 0x00007f92636ac8ec in () at /usr/lib64/libc.so.6
> #1 0x00007f926365d3e2 in raise () at /usr/lib64/libc.so.6
> #2 0x0000563f0697d0a5 in terminate_due_to_signal (sig=11, 
> backtrace_limit=<optimized out>) at emacs.c:464
> #3 0x0000563f0697def8 in handle_fatal_signal (sig=11) at sysdep.c:1783
> fatal = <optimized out>
> #4 deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
> fatal = <optimized out>
> #5 deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
> fatal = <optimized out>
> #6 handle_sigsegv (sig=11, siginfo=0x563f072243f0 <sigsegv_stack+64496>, 
> arg=<optimized out>) at sysdep.c:1888
> fatal = <optimized out>
> #7 0x00007f926365d490 in <signal handler called> () at /usr/lib64/libc.so.6
> #8 0x0000563f06c49d89 in pgtk_handle_selection_clear (event=<optimized 
> out>) at pgtkselect.c:742
> selection = <optimized out>
> changed_owner_time = 0
> selection_symbol = <optimized out>
> local_selection_data = <optimized out>
> local_selection_time = <optimized out>
> dpyinfo = 0x90c1b80
> Vselection_alist = <optimized out>

Sadly, it seems that most of the relevant local variables have been
optimized out.  Would you please run (in this frame):

  (gdb) *event
  (gdb) p *event->selection

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Sun, 21 May 2023 05:13:02 GMT) Full text and rfc822 format available.

Message #11 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: "63614 <at> debbugs.gnu.org" <63614 <at> debbugs.gnu.org>
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Sun, 21 May 2023 13:11:53 +0800
Leonardo Hernández Hernández <leohdz172 <at> proton.me> writes:

>> Sadly, it seems that most of the relevant local variables have been
>> optimized out. Would you please run (in this frame):
>> 
>
>> (gdb) *event
>> (gdb) p *event->selection
>> 
>
>> 
>
>> Thanks.
>
> (gdb) frame 8
> #8  0x0000563f06c49d89 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
> 742	 local_selection_data = LOCAL_SELECTION (selection_symbol, dpyinfo);
> (gdb) p *event
> value has been optimized out
> (gdb) frame 9
> #9  0x0000563f06a9a5c6 in pgtk_handle_selection_event (event=0x7fff20369bc0) at pgtkselect.c:782
> 782	   pgtk_handle_selection_clear (event);
> (gdb) p *event
> $1 = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
> (gdb) p *event->selection 
>
> $2 = <incomplete type>
> (gdb) p *event->dpyinfo 
>
> Cannot access memory at address 0x90c1b80
> (gdb) quit

What is:

  (gdb) p x_display_list

?

And thanks in advance.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Sun, 21 May 2023 07:33:03 GMT) Full text and rfc822 format available.

Message #14 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: "63614 <at> debbugs.gnu.org" <63614 <at> debbugs.gnu.org>
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Sun, 21 May 2023 04:30:39 +0000
[Message part 1 (text/plain, inline)]
> Sadly, it seems that most of the relevant local variables have been
> optimized out. Would you please run (in this frame):
> 

> (gdb) *event
> (gdb) p *event->selection
> 

> 

> Thanks.

(gdb) frame 8
#8  0x0000563f06c49d89 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
742	 local_selection_data = LOCAL_SELECTION (selection_symbol, dpyinfo);
(gdb) p *event
value has been optimized out
(gdb) frame 9
#9  0x0000563f06a9a5c6 in pgtk_handle_selection_event (event=0x7fff20369bc0) at pgtkselect.c:782
782	   pgtk_handle_selection_clear (event);
(gdb) p *event
$1 = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
(gdb) p *event->selection 

$2 = <incomplete type>
(gdb) p *event->dpyinfo 

Cannot access memory at address 0x90c1b80
(gdb) quit
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Sun, 21 May 2023 07:33:03 GMT) Full text and rfc822 format available.

Message #17 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>, "63614 <at> debbugs.gnu.org" <63614 <at> debbugs.gnu.org>
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Sun, 21 May 2023 06:42:30 +0000
[Message part 1 (text/plain, inline)]
> What is:
> 

> (gdb) p x_display_list
> 

> ?
> 

> And thanks in advance.

(gdb) p x_display_list 

$1 = (struct pgtk_display_info *) 0x563f090c1b80
(gdb) p *x_display_list 

$2 = {next = 0x0, terminal = 0x563f08fd4b08, {gdpy = 0x563f08f0c620, display = 0x563f08f0c620}, name_list_element = 0x563f08e6f3c3, reference_count = 1, x_id = 1, 

  x_id_name = 0x563f0908b5e0 "emacs <at> gentoo", n_fonts = 5, smallest_char_width = 2, smallest_font_height = 15, bitmaps = 0x0, bitmaps_size = 0, bitmaps_last = 0, resx = 96, resy = 96, 

  grabbed = 0, n_planes = 32, color_p = 1, icon_bitmap_id = -2, root_window = 42, rdb = 0x0, vertical_scroll_bar_cursor = 0x563f09044e00, horizontal_scroll_bar_cursor = 0x563f090abc90, 

  mouse_highlight = {mouse_face_beg_row = -1, mouse_face_beg_col = -1, mouse_face_beg_x = 0, mouse_face_end_row = -1, mouse_face_end_col = -1, mouse_face_end_x = 0, mouse_face_window = 0x0, 

    mouse_face_face_id = 0, mouse_face_overlay = 0x0, mouse_face_mouse_frame = 0x0, mouse_face_mouse_x = 0, mouse_face_mouse_y = 0, mouse_face_past_end = false, mouse_face_defer = false, 

    mouse_face_hidden = false}, highlight_frame = 0x0, x_focus_frame = 0x0, x_focus_event_frame = 0x0, last_mouse_frame = 0x0, last_mouse_motion_frame = 0x0, last_mouse_motion_x = 0, 

  last_mouse_motion_y = 0, last_mouse_glyph = {x = 0, y = 0, width = 0, height = 0}, last_mouse_movement_time = 0, last_user_time = 50116744, last_mouse_scroll_bar = 0x0, 

  invisible_cursor = 0x563f090b7c90, xg_cursor = 0x563f090c6ad0, devices = 0x563f090c5a10, last_mouse_glyph_frame = 0x0, last_click_event = 0x0, im = {context = 0x563f090d6e00, 

    focused_frame = 0x0}, scroll = {acc_x = 0, acc_y = 0, x_per_char = 1, y_per_line = 1}, connection = 4}



I have been testing and seems that this happens when
both `-O3` and `-march=native` exist in CFLAGS, if I turn `-O3`
into `-O2` or remove `-march=native` then it does not crashes.
This is most likely a bug in gcc rather than emacs, right?,
in case you required it, my gcc version is:
gcc (Gentoo Hardened 13.1.1_p20230513 p2) 13.1.1 20230513
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Mon, 22 May 2023 01:13:02 GMT) Full text and rfc822 format available.

Message #20 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Mon, 22 May 2023 09:11:52 +0800
Leonardo Hernández <leohdz172 <at> proton.me> writes:

> (event=0x7fff20369bc0) at pgtkselect.c:782
> event = 0x563f071d44a0 <kbd_buffer+1344>
> copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 
> 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
> moved_events = <optimized out>
> #10 process_special_events () at keyboard.c:4449
> event = 0x563f071d44a0 <kbd_buffer+1344>
> copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x90c1b80, requestor = 
> 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
> moved_events = <optimized out>
> #11 0x0000563f06a9b7cd in swallow_events (do_display=true) at 
> keyboard.c:4489
> old_timers_run = <optimized out>

If I'm not mistaken, what seems to be shown is that an invalid selection
event somehow ended up in the keyboard buffer, to be processed by
process_special_events.  Possibly, one such event was processed earlier,
but not correctly removed from the keyboard buffer.

What is:

  (gdb) p kbd_buffer[1344].sie

?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Wed, 24 May 2023 06:51:01 GMT) Full text and rfc822 format available.

Message #23 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: "63614 <at> debbugs.gnu.org" <63614 <at> debbugs.gnu.org>
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Wed, 24 May 2023 14:50:28 +0800
Leonardo Hernández Hernández <leohdz172 <at> proton.me> writes:

>> What is:
>> 
>
>> (gdb) p kbd_buffer[1344].sie
>> 
>
>> ?
>
> (gdb) p kbd_buffer[1344].sie
> $1 = {kind = NO_EVENT, dpyinfo = 0x0, requestor = 0x0, selection = 0x0, target = 0x0, property = 0x0, time = 0}

It's been three days, and I doubt this is from the same GDB session
that produced the backtrace I replied to.  Would you please show a
new:

  (gdb) bt full

again?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Wed, 24 May 2023 08:05:01 GMT) Full text and rfc822 format available.

Message #26 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: "63614 <at> debbugs.gnu.org" <63614 <at> debbugs.gnu.org>
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Wed, 24 May 2023 06:37:51 +0000
[Message part 1 (text/plain, inline)]
> What is:
> 

> (gdb) p kbd_buffer[1344].sie
> 

> ?

(gdb) p kbd_buffer[1344].sie
$1 = {kind = NO_EVENT, dpyinfo = 0x0, requestor = 0x0, selection = 0x0, target = 0x0, property = 0x0, time = 0}
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Thu, 25 May 2023 06:15:01 GMT) Full text and rfc822 format available.

Message #29 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Thu, 25 May 2023 14:13:38 +0800
Leonardo Hernández Hernández <leohdz172 <at> proton.me> writes:

>         event = 0x55d8dac3bc20 <kbd_buffer+1088>
>         copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
>         moved_events = <optimized out>
> #10 process_special_events () at keyboard.c:4449
>         event = 0x55d8dac3bc20 <kbd_buffer+1088>
>         copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
>         moved_events = <optimized out>
> #11 0x000055d8da521cbd in swallow_events (do_display=true) at keyboard.c:4489
>         old_timers_run = <optimized out>
> #12 0x000055d8da63da7c in wait_reading_process_output
>     (time_limit=<optimized out>, nsecs=<optimized out>, read_kbd=<optimized out>, do_display=<optimized out>, wait_for_cell=<optimized out>, wait_proc=<optimized out>, just_wait_proc=<optimized out>) at process.c:5781
>         leave = false
>         wrapped = <optimized out>
>         process_skipped = <optimized out>
>         channel_start = <optimized out>
>         child_fd = <optimized out>
>         channel = <optimized out>
>         nfds = <optimized out>
>         Available = {fds_bits = {16, 0 <repeats 15 times>}}
>         Writeok = {fds_bits = {0 <repeats 16 times>}}
>         check_write = true
>         check_delay = <optimized out>
>         no_avail = false
>         xerrno = 11
>         proc = <optimized out>
>         timeout = {tv_sec = 0, tv_nsec = 0}
>         end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
>         timer_delay = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
>         got_output_end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
>         wait = <optimized out>
>         got_some_output = <optimized out>
>         prev_wait_proc_nbytes_read = <optimized out>
>         retry_for_async = <optimized out>
>         count = {bytes = <optimized out>}
>         now = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
>         last_read_channel = -1
> #13 0x000055d8da41e3a0 in sit_for (timeout=<optimized out>, reading=<optimized out>, display_option=<optimized out>) at dispnew.c:6264
>         sec = 30
>         nsec = 0
>         do_display = <optimized out>
>         curbuf_eq_winbuf = true
>         nbytes = <optimized out>
> #14 0x000055d8da52a5c5 in read_char (commandflag=1, map=0x55d8dbdab6d3, prev_event=0x0, used_mouse_menu=0x7ffffcfef4fb, end_time=0x0) at keyboard.c:2881
>         delay_level = <optimized out>
>         buffer_size = <optimized out>
>         c = 0x0
>         local_getcjmp = {{__jmpbuf = {94389871329920, -4940312681896898891, 1, 140582085818120, 0, 94389890508307, -4940312682234540363, -1207467647118897483}, __mask_was_saved = 0, __saved_mask = {__val = {94389865389056, 94389889840131, 586, 2, 94389865403823, 140737437954896, 40080, 140737437954784, 0, 0, 140582085818125, 0, 94389889840131, 0, 146, 147}}}}
>         save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
>         tem = <optimized out>
>         save = <optimized out>
>         previous_echo_area_message = 0x0
>         also_record = 0x0
>         reread = false
>         recorded = false
>         polling_stopped_here = false
>         orig_kboard = 0x55d8db7facb0
> #15 0x000055d8da6d84b7 in read_key_sequence.constprop.0
>     (keybuf=<optimized out>, prevent_redisplay=false, fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized out>, dont_downcase_last=<optimized out>, prompt=<optimized out>)
>     at keyboard.c:10083
>         interrupted_kboard = 0x55d8db7facb0
>         key = <optimized out>
>         used_mouse_menu = false
>         echo_local_start = 0
>         last_real_key_start = 0
>         keys_local_start = 0
>         new_binding = <optimized out>
>         t = 0
>         echo_start = 0
>         keys_start = 0
>         current_binding = 0x55d8dbdab6d3
>         first_unbound = 31
>         mock_input = 0
>         used_mouse_menu_history = {false <repeats 30 times>}
>         fkey = {parent = 0x55d8db691393, map = 0x55d8db691393, start = 0, end = 0}
>         keytran = {parent = 0x7fdbd1c0897b, map = 0x7fdbd1c0897b, start = 0, end = 0}
>         indec = {parent = 0x55d8db6913a3, map = 0x55d8db6913a3, start = 0, end = 0}
>         shift_translated = <optimized out>
>         delayed_switch_frame = <optimized out>
>         original_uppercase = <optimized out>
>         original_uppercase_position = <optimized out>
>         dummyflag = false
>         fake_prefixed_keys = 0x0
>         first_event = 0x0
>         second_event = <optimized out>
> #16 0x000055d8da51dc5a in command_loop_1 () at keyboard.c:1384
>         cmd = <optimized out>
>         keybuf = {0x5e, 0x55d8da5dc786 <eval_sub+1142>, 0x55d8db63e510, 0x55d8da63530c <exec_byte_code+508>, 0x0, 0x80, 0x0, 0x7fdbd190e738, 0x55d8da78c020 <main_thread.lto_priv>, 0x7fdbd1ce62b5, 0x55d8db6843c4, 0x0, 0x55d8da716314, 0x7fdbd6f01705, 0x53474e, 0x7fdbd5638400, 0x7ffffcfefaf0, 0xe90a45cb1b95ae00, 0x9510, 0x55d8da71cd60, 0x7ffffcfef7c0, 0x60, 0x55d8db6843c4, 0x0, 0x55d8da78c020 <main_thread.lto_priv>, 0x55d8da51b995 <top_level_2+725>, 0x55d8da716314, 0x7fdbd5638f12 <malloc+434>, 0x15, 0x30}
>         i = <optimized out>
>         prev_modiff = 31
>         prev_buffer = 0x7fdbd1497708
> #17 0x000055d8da5d6b67 in internal_condition_case (bfun=0x55d8da51d990 <command_loop_1>, handlers=<optimized out>, hfun=0x55d8da51b3f0 <cmd_error>) at eval.c:1474
>         val = <optimized out>
>         c = 0x55d8db688350
> #18 0x000055d8da51b6ae in command_loop_2 (handlers=handlers <at> entry=0x90) at keyboard.c:1133
>         val = <optimized out>
> #19 0x000055d8da5d6abc in internal_catch (tag=<optimized out>, func=0x55d8da51b680 <command_loop_2>, arg=0x90) at eval.c:1197
>         val = <optimized out>
>         c = 0x55d8db687de0
> #20 0x000055d8da51d479 in command_loop () at keyboard.c:1111
> #21 0x000055d8da70b9b0 in recursive_edit_1.isra.0 () at keyboard.c:720
>         val = <optimized out>
> #22 0x000055d8da51d95c in Frecursive_edit () at keyboard.c:803
>         buffer = <optimized out>
> #23 0x000055d8da411b9d in main (argc=<optimized out>, argv=0x7ffffcfefc08) at emacs.c:2529
>         stack_bottom_variable = 0x0
>         no_loadup = false
>         junk = 0x0
>         dname_arg = 0x0
>         ch_to_dir = 0x0
>         original_pwd = 0x0
>         dump_mode = <optimized out>
>         skip_args = 0
>         temacs = 0x0
>         attempt_load_pdump = <optimized out>
>         only_version = false
>         rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
>         lc_all = <optimized out>
>         sockfd = -1
>         module_assertions = <optimized out>
> (gdb) frame 8
> #8  0x000055d8da6bd059 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
> 742	 local_selection_data = LOCAL_SELECTION (selection_symbol, dpyinfo);
> (gdb) p *event
> value has been optimized out
> (gdb) frame 9
> #9  0x000055d8da520ab6 in pgtk_handle_selection_event (event=0x7ffffcfeea00) at pgtkselect.c:782
> 782	   pgtk_handle_selection_clear (event);
> (gdb) p *event
> $1 = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}

I suppose what this shows is that an invalid SELECTION_CLEAR_EVENT has
somehow found its way in to the keyboard buffer.

We need to narrow down the scope of the problem.  If you comment out the
entirety of `process_special_events', does the crash still occur?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Thu, 25 May 2023 07:31:01 GMT) Full text and rfc822 format available.

Message #32 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Thu, 25 May 2023 05:34:04 +0000
> It's been three days, and I doubt this is from the same GDB session
> that produced the backtrace I replied to.
>

Indeed, I'm sorry.

> Would you please show a
> new:
> 
>   (gdb) bt full
> 
> again?

(gdb) bt full
#0  0x00007fdbd562a8ec in  () at /usr/lib64/libc.so.6
#1  0x00007fdbd55db3e2 in raise () at /usr/lib64/libc.so.6
#2  0x000055d8da403c6a in terminate_due_to_signal (sig=11, backtrace_limit=<optimized out>) at emacs.c:464
#3  0x000055d8da404abd in handle_fatal_signal (sig=11) at sysdep.c:1783
        fatal = <optimized out>
#4  deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
        fatal = <optimized out>
#5  deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
        fatal = <optimized out>
#6  handle_sigsegv (sig=11, siginfo=0x55d8dac8bcb0 <sigsegv_stack+64528>, arg=<optimized out>) at sysdep.c:1888
        fatal = <optimized out>
#7  0x00007fdbd55db490 in <signal handler called> () at /usr/lib64/libc.so.6
#8  0x000055d8da6bd059 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
        selection = <optimized out>
        changed_owner_time = 0
        selection_symbol = <optimized out>
        local_selection_data = <optimized out>
        local_selection_time = <optimized out>
        dpyinfo = 0xdb87f650
        Vselection_alist = <optimized out>
#9  0x000055d8da520ab6 in pgtk_handle_selection_event (event=0x7ffffcfeea00) at pgtkselect.c:782
        event = 0x55d8dac3bc20 <kbd_buffer+1088>
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        moved_events = <optimized out>
#10 process_special_events () at keyboard.c:4449
        event = 0x55d8dac3bc20 <kbd_buffer+1088>
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        moved_events = <optimized out>
#11 0x000055d8da521cbd in swallow_events (do_display=true) at keyboard.c:4489
        old_timers_run = <optimized out>
#12 0x000055d8da63da7c in wait_reading_process_output
    (time_limit=<optimized out>, nsecs=<optimized out>, read_kbd=<optimized out>, do_display=<optimized out>, wait_for_cell=<optimized out>, wait_proc=<optimized out>, just_wait_proc=<optimized out>) at process.c:5781
        leave = false
        wrapped = <optimized out>
        process_skipped = <optimized out>
        channel_start = <optimized out>
        child_fd = <optimized out>
        channel = <optimized out>
        nfds = <optimized out>
        Available = {fds_bits = {16, 0 <repeats 15 times>}}
        Writeok = {fds_bits = {0 <repeats 16 times>}}
        check_write = true
        check_delay = <optimized out>
        no_avail = false
        xerrno = 11
        proc = <optimized out>
        timeout = {tv_sec = 0, tv_nsec = 0}
        end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        timer_delay = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        got_output_end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        wait = <optimized out>
        got_some_output = <optimized out>
        prev_wait_proc_nbytes_read = <optimized out>
        retry_for_async = <optimized out>
        count = {bytes = <optimized out>}
        now = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        last_read_channel = -1
#13 0x000055d8da41e3a0 in sit_for (timeout=<optimized out>, reading=<optimized out>, display_option=<optimized out>) at dispnew.c:6264
        sec = 30
        nsec = 0
        do_display = <optimized out>
        curbuf_eq_winbuf = true
        nbytes = <optimized out>
#14 0x000055d8da52a5c5 in read_char (commandflag=1, map=0x55d8dbdab6d3, prev_event=0x0, used_mouse_menu=0x7ffffcfef4fb, end_time=0x0) at keyboard.c:2881
        delay_level = <optimized out>
        buffer_size = <optimized out>
        c = 0x0
        local_getcjmp = {{__jmpbuf = {94389871329920, -4940312681896898891, 1, 140582085818120, 0, 94389890508307, -4940312682234540363, -1207467647118897483}, __mask_was_saved = 0, __saved_mask = {__val = {94389865389056, 94389889840131, 586, 2, 94389865403823, 140737437954896, 40080, 140737437954784, 0, 0, 140582085818125, 0, 94389889840131, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x55d8db7facb0
#15 0x000055d8da6d84b7 in read_key_sequence.constprop.0
    (keybuf=<optimized out>, prevent_redisplay=false, fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized out>, dont_downcase_last=<optimized out>, prompt=<optimized out>)
    at keyboard.c:10083
        interrupted_kboard = 0x55d8db7facb0
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 0x55d8dbdab6d3
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {parent = 0x55d8db691393, map = 0x55d8db691393, start = 0, end = 0}
        keytran = {parent = 0x7fdbd1c0897b, map = 0x7fdbd1c0897b, start = 0, end = 0}
        indec = {parent = 0x55d8db6913a3, map = 0x55d8db6913a3, start = 0, end = 0}
        shift_translated = <optimized out>
        delayed_switch_frame = <optimized out>
        original_uppercase = <optimized out>
        original_uppercase_position = <optimized out>
        dummyflag = false
        fake_prefixed_keys = 0x0
        first_event = 0x0
        second_event = <optimized out>
#16 0x000055d8da51dc5a in command_loop_1 () at keyboard.c:1384
        cmd = <optimized out>
        keybuf = {0x5e, 0x55d8da5dc786 <eval_sub+1142>, 0x55d8db63e510, 0x55d8da63530c <exec_byte_code+508>, 0x0, 0x80, 0x0, 0x7fdbd190e738, 0x55d8da78c020 <main_thread.lto_priv>, 0x7fdbd1ce62b5, 0x55d8db6843c4, 0x0, 0x55d8da716314, 0x7fdbd6f01705, 0x53474e, 0x7fdbd5638400, 0x7ffffcfefaf0, 0xe90a45cb1b95ae00, 0x9510, 0x55d8da71cd60, 0x7ffffcfef7c0, 0x60, 0x55d8db6843c4, 0x0, 0x55d8da78c020 <main_thread.lto_priv>, 0x55d8da51b995 <top_level_2+725>, 0x55d8da716314, 0x7fdbd5638f12 <malloc+434>, 0x15, 0x30}
        i = <optimized out>
        prev_modiff = 31
        prev_buffer = 0x7fdbd1497708
#17 0x000055d8da5d6b67 in internal_condition_case (bfun=0x55d8da51d990 <command_loop_1>, handlers=<optimized out>, hfun=0x55d8da51b3f0 <cmd_error>) at eval.c:1474
        val = <optimized out>
        c = 0x55d8db688350
#18 0x000055d8da51b6ae in command_loop_2 (handlers=handlers <at> entry=0x90) at keyboard.c:1133
        val = <optimized out>
#19 0x000055d8da5d6abc in internal_catch (tag=<optimized out>, func=0x55d8da51b680 <command_loop_2>, arg=0x90) at eval.c:1197
        val = <optimized out>
        c = 0x55d8db687de0
#20 0x000055d8da51d479 in command_loop () at keyboard.c:1111
#21 0x000055d8da70b9b0 in recursive_edit_1.isra.0 () at keyboard.c:720
        val = <optimized out>
#22 0x000055d8da51d95c in Frecursive_edit () at keyboard.c:803
        buffer = <optimized out>
#23 0x000055d8da411b9d in main (argc=<optimized out>, argv=0x7ffffcfefc08) at emacs.c:2529
        stack_bottom_variable = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = <optimized out>
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = false
        rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
        lc_all = <optimized out>
        sockfd = -1
        module_assertions = <optimized out>
(gdb) frame 8
#8  0x000055d8da6bd059 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
742	 local_selection_data = LOCAL_SELECTION (selection_symbol, dpyinfo);
(gdb) p *event
value has been optimized out
(gdb) frame 9
#9  0x000055d8da520ab6 in pgtk_handle_selection_event (event=0x7ffffcfeea00) at pgtkselect.c:782
782	   pgtk_handle_selection_clear (event);
(gdb) p *event
$1 = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0xdb87f650, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
(gdb) p *event->selection
$2 = <incomplete type>
(gdb) p *event->dpyinfo
Cannot access memory at address 0xdb87f650
(gdb) p *x_display_list
$3 = {next = 0x0, terminal = 0x55d8db7627f0, {gdpy = 0x55d8db798b10, display = 0x55d8db798b10}, name_list_element = 0x55d8db691383, reference_count = 1, x_id = 1,
  x_id_name = 0x55d8db85dad0 "emacs <at> gentoo", n_fonts = 5, smallest_char_width = 2, smallest_font_height = 15, bitmaps = 0x0, bitmaps_size = 0, bitmaps_last = 0, resx = 96, resy = 96,
  grabbed = 0, n_planes = 32, color_p = 1, icon_bitmap_id = -2, root_window = 42, rdb = 0x0, vertical_scroll_bar_cursor = 0x55d8db81adc0, horizontal_scroll_bar_cursor = 0x55d8db863eb0,
  mouse_highlight = {mouse_face_beg_row = -1, mouse_face_beg_col = -1, mouse_face_beg_x = 0, mouse_face_end_row = -1, mouse_face_end_col = -1, mouse_face_end_x = 0, mouse_face_window = 0x0,
    mouse_face_face_id = 0, mouse_face_overlay = 0x0, mouse_face_mouse_frame = 0x0, mouse_face_mouse_x = 0, mouse_face_mouse_y = 0, mouse_face_past_end = false, mouse_face_defer = false,
    mouse_face_hidden = false}, highlight_frame = 0x0, x_focus_frame = 0x0, x_focus_event_frame = 0x0, last_mouse_frame = 0x0, last_mouse_motion_frame = 0x0, last_mouse_motion_x = 0,
  last_mouse_motion_y = 0, last_mouse_glyph = {x = 0, y = 0, width = 0, height = 0}, last_mouse_movement_time = 0, last_user_time = 43447740, last_mouse_scroll_bar = 0x0,
  invisible_cursor = 0x55d8db883f40, xg_cursor = 0x55d8db884c40, devices = 0x55d8db88f310, last_mouse_glyph_frame = 0x0, last_click_event = 0x0, im = {context = 0x55d8db8674c0,
    focused_frame = 0x0}, scroll = {acc_x = 0, acc_y = 0, x_per_char = 1, y_per_line = 1}, connection = 4}
(gdb) p kbd_buffer[1088].sie
$4 = {kind = NO_EVENT, dpyinfo = 0x0, requestor = 0x0, selection = 0x0, target = 0x0, property = 0x0, time = 0}
(gdb) quit





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Thu, 25 May 2023 07:31:02 GMT) Full text and rfc822 format available.

Message #35 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Thu, 25 May 2023 06:48:17 +0000
On Thu, May 25, 2023 at 12:13:38AM -0600, Po Lu wrote:
> I suppose what this shows is that an invalid SELECTION_CLEAR_EVENT has
> somehow found its way in to the keyboard buffer.
> 
> We need to narrow down the scope of the problem.  If you comment out the
> entirety of `process_special_events', does the crash still occur?

Yes, I am using this diff:

diff --git a/src/keyboard.c b/src/keyboard.c
index b1ccf4acde4..2c9515194f7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4401,6 +4401,7 @@ kbd_buffer_get_event (KBOARD **kbp,
 static void
 process_special_events (void)
 {
+  #if 0
   union buffered_input_event *event;
 #if defined HAVE_X11 || defined HAVE_PGTK || defined HAVE_HAIKU
 #ifndef HAVE_HAIKU
@@ -4476,6 +4477,7 @@ process_special_events (void)
 #endif
 	}
     }
+  #endif
 }

 /* Process any events that are not user-visible, run timer events that



and the backtrace:

(gdb) bt full
#0  0x00007fe5d8b238ec in  () at /usr/lib64/libc.so.6
#1  0x00007fe5d8ad43e2 in raise () at /usr/lib64/libc.so.6
#2  0x0000558b3fc04c6a in terminate_due_to_signal (sig=11, backtrace_limit=<optimized out>) at emacs.c:464
#3  0x0000558b3fc05ae5 in handle_fatal_signal (sig=11) at sysdep.c:1783
        fatal = <optimized out>
#4  deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
        fatal = <optimized out>
#5  deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
        fatal = <optimized out>
#6  handle_sigsegv (sig=11, siginfo=0x558b4048ccb0 <sigsegv_stack+64528>, arg=<optimized out>) at sysdep.c:1888
        fatal = <optimized out>
#7  0x00007fe5d8ad4490 in <signal handler called> () at /usr/lib64/libc.so.6
#8  0x0000558b3fd2795f in pgtk_handle_selection_clear (event=0x7ffe61851e40) at pgtkselect.c:742
        changed_owner_time = 0
        local_selection_time = <optimized out>
        dpyinfo = 0x40da71d0
        Vselection_alist = <optimized out>
        selection = <optimized out>
        selection_symbol = <optimized out>
        local_selection_data = <optimized out>
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x40da71d0, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        event = <optimized out>
        obj = 0x0
        str = <optimized out>
#9  pgtk_handle_selection_event (event=0x7ffe61851e40) at pgtkselect.c:782
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x40da71d0, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        event = <optimized out>
        obj = 0x0
        str = <optimized out>
#10 kbd_buffer_get_event (kbp=kbp <at> entry=0x7ffe618520c8, used_mouse_menu=used_mouse_menu <at> entry=0x7ffe6185263b, end_time=end_time <at> entry=0x0) at keyboard.c:4071
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x40da71d0, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        event = <optimized out>
        obj = 0x0
        str = <optimized out>
#11 0x0000558b3fd29bc4 in read_event_from_main_queue (used_mouse_menu=<optimized out>, local_getcjmp=0x7ffe61852340, end_time=<optimized out>) at keyboard.c:2279
        c = 0x0
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        kb = 0x558b40d2dbd0
        nextevt = <optimized out>
        frame = <optimized out>
        terminal = <optimized out>
        events = {0x7fe5d489770d, 0x13f000000, 0x558b41335113, 0x9c90d489770d, 0x24a, 0x558b40c05963, 0x9c90, 0x9c90, 0x4000000006000000, 0x400000003f000000, 0x0, 0x558b3fe54381 <lookup_char_property+497>, 0x9c90, 0x1618524b0, 0xffffffffffffffff, 0x93}
        n = 0
        c = <optimized out>
        local_getcjmp = {{__jmpbuf = {94056566772352, -1901120014703127217, 1, 140625090017032, 0, 94056582669987, -1901120015443421873, -5658946911598406321}, __mask_was_saved = 0, __saved_mask = {__val = {94056560832960, 94056575718051, 586, 2, 94056560847727, 140730534536336, 40080, 140730534536224, 0, 0, 140625090017037, 0, 94056575718051, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x558b40d2dbd0
#12 read_decoded_event_from_main_queue (used_mouse_menu=<optimized out>, prev_event=<optimized out>, local_getcjmp=<optimized out>, end_time=<optimized out>) at keyboard.c:2343
        nextevt = <optimized out>
        frame = <optimized out>
        terminal = <optimized out>
        events = {0x7fe5d489770d, 0x13f000000, 0x558b41335113, 0x9c90d489770d, 0x24a, 0x558b40c05963, 0x9c90, 0x9c90, 0x4000000006000000, 0x400000003f000000, 0x0, 0x558b3fe54381 <lookup_char_property+497>, 0x9c90, 0x1618524b0, 0xffffffffffffffff, 0x93}
        n = 0
        c = <optimized out>
        local_getcjmp = {{__jmpbuf = {94056566772352, -1901120014703127217, 1, 140625090017032, 0, 94056582669987, -1901120015443421873, -5658946911598406321}, __mask_was_saved = 0, __saved_mask = {__val = {94056560832960, 94056575718051, 586, 2, 94056560847727, 140730534536336, 40080, 140730534536224, 0, 0, 140625090017037, 0, 94056575718051, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x558b40d2dbd0
#13 read_char (commandflag=1, map=0x558b40c8c593, prev_event=0x0, used_mouse_menu=0x7ffe6185263b, end_time=0x0) at keyboard.c:2973
        c = <optimized out>
        local_getcjmp = {{__jmpbuf = {94056566772352, -1901120014703127217, 1, 140625090017032, 0, 94056582669987, -1901120015443421873, -5658946911598406321}, __mask_was_saved = 0, __saved_mask = {__val = {94056560832960, 94056575718051, 586, 2, 94056560847727, 140730534536336, 40080, 140730534536224, 0, 0, 140625090017037, 0, 94056575718051, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x558b40d2dbd0
#14 0x0000558b3feda8b7 in read_key_sequence.constprop.0
    (keybuf=<optimized out>, prevent_redisplay=false, fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized out>, dont_downcase_last=<optimized out>, prompt=<optimized out>)
    at keyboard.c:10085
        interrupted_kboard = 0x558b40d2dbd0
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 0x558b40c8c593
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {parent = 0x558b40bb6393, map = 0x558b40bb6393, start = 0, end = 0}
        keytran = {parent = 0x7fe5d500897b, map = 0x7fe5d500897b, start = 0, end = 0}
        indec = {parent = 0x558b40bb63a3, map = 0x558b40bb63a3, start = 0, end = 0}
        shift_translated = <optimized out>
        delayed_switch_frame = <optimized out>
        original_uppercase = <optimized out>
        original_uppercase_position = <optimized out>
        dummyflag = false
        fake_prefixed_keys = 0x0
        first_event = 0x0
        second_event = <optimized out>
#15 0x0000558b3fd1ebea in command_loop_1 () at keyboard.c:1384
        cmd = <optimized out>
        keybuf = {0x5e, 0x558b3fddddd6 <eval_sub+1142>, 0x558b40b63510, 0x558b3fe368dc <exec_byte_code+508>, 0x0, 0x80, 0x0, 0x7fe5d4d0e738, 0x558b3ff8d020 <main_thread.lto_priv>, 0x7fe5d50e62b5, 0x558b40ba93c4, 0x0, 0x558b3ff17314, 0x7fe5da405705, 0x53474e, 0x7fe5d8b31400, 0x7ffe61852c30, 0xc8655754adb42900, 0x9510, 0x558b3ff1dd60, 0x7ffe61852900, 0x60, 0x558b40ba93c4, 0x0, 0x558b3ff8d020 <main_thread.lto_priv>, 0x558b3fd1c925 <top_level_2+725>, 0x558b3ff17314, 0x7fe5d8b31f12 <malloc+434>, 0x15, 0x30}
        i = <optimized out>
        prev_modiff = 37
        prev_buffer = 0x7fe5d4897708
#16 0x0000558b3fdd81b7 in internal_condition_case (bfun=0x558b3fd1e920 <command_loop_1>, handlers=<optimized out>, hfun=0x558b3fd1c380 <cmd_error>) at eval.c:1474
        val = <optimized out>
        c = 0x558b40bad350
#17 0x0000558b3fd1c63e in command_loop_2 (handlers=handlers <at> entry=0x90) at keyboard.c:1133
        val = <optimized out>
#18 0x0000558b3fdd810c in internal_catch (tag=<optimized out>, func=0x558b3fd1c610 <command_loop_2>, arg=0x90) at eval.c:1197
        val = <optimized out>
        c = 0x558b40bacde0
#19 0x0000558b3fd1e409 in command_loop () at keyboard.c:1111
#20 0x0000558b3ff0d720 in recursive_edit_1.isra.0 () at keyboard.c:720
        val = <optimized out>
#21 0x0000558b3fd1e8ec in Frecursive_edit () at keyboard.c:803
        buffer = <optimized out>
#22 0x0000558b3fc12bad in main (argc=<optimized out>, argv=0x7ffe61852d48) at emacs.c:2529
        stack_bottom_variable = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = <optimized out>
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = false
        rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
        lc_all = <optimized out>
        sockfd = -1
        module_assertions = <optimized out>
(gdb)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Thu, 25 May 2023 10:37:01 GMT) Full text and rfc822 format available.

Message #38 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Thu, 25 May 2023 18:35:56 +0800
OK, thanks.  Does the crash still happen with this?

diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index b8c626d81d8..bbe68f04adc 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -6606,8 +6606,7 @@ pgtk_selection_event (GtkWidget *widget, GdkEvent *event,
 
   if (event->type == GDK_PROPERTY_NOTIFY)
     pgtk_handle_property_notify (&event->property);
-  else if (event->type == GDK_SELECTION_CLEAR
-	   || event->type == GDK_SELECTION_REQUEST)
+  else if (event->type == GDK_SELECTION_REQUEST)
     {
       f = pgtk_find_selection_owner (event->selection.window);
 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Thu, 25 May 2023 22:40:02 GMT) Full text and rfc822 format available.

Message #41 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Thu, 25 May 2023 20:27:18 +0000
On Thu, May 25, 2023 at 04:35:56AM -0600, Po Lu wrote:
> OK, thanks.  Does the crash still happen with this?
> 
> diff --git a/src/pgtkterm.c b/src/pgtkterm.c
> index b8c626d81d8..bbe68f04adc 100644
> --- a/src/pgtkterm.c
> +++ b/src/pgtkterm.c
> @@ -6606,8 +6606,7 @@ pgtk_selection_event (GtkWidget *widget, GdkEvent *event,
> 
>    if (event->type == GDK_PROPERTY_NOTIFY)
>      pgtk_handle_property_notify (&event->property);
> -  else if (event->type == GDK_SELECTION_CLEAR
> -	   || event->type == GDK_SELECTION_REQUEST)
> +  else if (event->type == GDK_SELECTION_REQUEST)
>      {
>        f = pgtk_find_selection_owner (event->selection.window);
> 

The crash does not happen when copying text from outside emacs,
however it crashes when pasting text killed from emacs,
for example, open `emacs -Q` kill some text and try to paste that
text outside emacs (just run `wl-paste`)

Here the backtrace:
(gdb) bt full
#0  0x00007f1daf5d58ec in  () at /usr/lib64/libc.so.6
#1  0x00007f1daf5863e2 in raise () at /usr/lib64/libc.so.6
#2  0x00005634e0ec7c68 in terminate_due_to_signal (sig=11, backtrace_limit=<optimized out>)
    at emacs.c:464
#3  0x00005634e0ec8abb in handle_fatal_signal (sig=11) at sysdep.c:1783
        fatal = <optimized out>
#4  deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
        fatal = <optimized out>
#5  deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
        fatal = <optimized out>
#6  handle_sigsegv (sig=11, siginfo=0x5634e174fcb0 <sigsegv_stack+64528>, arg=<optimized out>)
    at sysdep.c:1888
        fatal = <optimized out>
#7  0x00007f1daf586490 in <signal handler called> () at /usr/lib64/libc.so.6
#8  pgtk_handle_selection_request (event=0x7fffdb8c9420) at pgtkselect.c:573
        local_selection_time = <optimized out>
        dpyinfo = 0xe35f53a0
        selection = 0x45
        selection_symbol = 0x150
        target = <optimized out>
        target_symbol = 0x2a30
        property = 0x5d
        local_selection_data = <optimized out>
        success = false
        pushed = false
        alias = <optimized out>
        tem = <optimized out>
#9  0x00005634e0fe4a75 in pgtk_handle_selection_event (event=0x7fffdb8c9420) at pgtkselect.c:784
        event = 0x5634e16fff20 <kbd_buffer+1856>
        copy = {kind = SELECTION_REQUEST_EVENT, dpyinfo = 0xe35f53a0, requestor = 0x5634e3756330, selection = 0x45, target = 0x4c, property = 0x5d, time = 0}
        moved_events = <optimized out>
#10 process_special_events () at keyboard.c:4449
        event = 0x5634e16fff20 <kbd_buffer+1856>
        copy = {kind = SELECTION_REQUEST_EVENT, dpyinfo = 0xe35f53a0, requestor = 0x5634e3756330, selection = 0x45, target = 0x4c, property = 0x5d, time = 0}
        moved_events = <optimized out>
#11 0x00005634e0fe5bed in swallow_events (do_display=true) at keyboard.c:4489
        old_timers_run = <optimized out>
#12 0x00005634e110195c in wait_reading_process_output
    (time_limit=<optimized out>, nsecs=<optimized out>, read_kbd=<optimized out>, do_display=<optimized out>, wait_for_cell=<optimized out>, wait_proc=<optimized out>, just_wait_proc=<optimized out>)
    at process.c:5781
        leave = false
        wrapped = <optimized out>
        process_skipped = <optimized out>
        channel_start = <optimized out>
        child_fd = <optimized out>
        channel = <optimized out>
        nfds = <optimized out>
        Available = {fds_bits = {16, 0 <repeats 15 times>}}
        Writeok = {fds_bits = {0 <repeats 16 times>}}
        check_write = true
        check_delay = <optimized out>
        no_avail = false
        xerrno = 11
        proc = <optimized out>
        timeout = {tv_sec = 0, tv_nsec = 0}
        end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        timer_delay = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        got_output_end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        wait = <optimized out>
        got_some_output = <optimized out>
        prev_wait_proc_nbytes_read = <optimized out>
        retry_for_async = <optimized out>
        count = {bytes = <optimized out>}
        now = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        last_read_channel = -1
#13 0x00005634e0ee23a0 in sit_for
    (timeout=<optimized out>, reading=<optimized out>, display_option=<optimized out>) at dispnew.c:6264
        sec = 30
        nsec = 0
        do_display = <optimized out>
        curbuf_eq_winbuf = true
        nbytes = <optimized out>
#14 0x00005634e0fee4f5 in read_char
    (commandflag=1, map=0x5634e3b7e0e3, prev_event=0x0, used_mouse_menu=0x7fffdb8c9f1b, end_time=0x0)
    at keyboard.c:2881
        delay_level = <optimized out>
        buffer_size = <optimized out>
        c = 0x0
        local_getcjmp = {{__jmpbuf = {94785120273024, -60015580120531561, 1, 139765404497672, 0, 94785158788803, -60015580189737577, -5999710865743200873}, __mask_was_saved = 0, __saved_mask = {__val = {94785114331872, 2000000000002, 586, 500000, 94785114346639, 0, 40080, 140736876813568, 0, 0, 139765404497677, 0, 94785114190645, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x5634e356ffb0
#15 0x00005634e119c3a7 in read_key_sequence.constprop.0
    (keybuf=<optimized out>, prevent_redisplay=false, fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized out>, dont_downcase_last=<optimized out>, prompt=<optimized out>) at keyboard.c:10083
        interrupted_kboard = 0x5634e356ffb0
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 0x5634e3b7e0e3
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {parent = 0x5634e3406393, map = 0x5634e3406393, start = 0, end = 0}
        keytran = {parent = 0x7f1dabc0897b, map = 0x7f1dabc0897b, start = 0, end = 0}
        indec = {parent = 0x5634e34063a3, map = 0x5634e34063a3, start = 0, end = 0}
        shift_translated = <optimized out>
        delayed_switch_frame = <optimized out>
        original_uppercase = <optimized out>
        original_uppercase_position = <optimized out>
        dummyflag = false
        fake_prefixed_keys = 0x0
        first_event = 0x0
        second_event = <optimized out>
#16 0x00005634e0fe1b8a in command_loop_1 () at keyboard.c:1384
        cmd = <optimized out>
        keybuf = {0x5e, 0x5634e10a0676 <eval_sub+1142>, 0x5634e33b3510, 0x5634e10f91fc <exec_byte_code+508>, 0x0, 0x80, 0x0, 0x7f1dab90e738, 0x5634e1250020 <main_thread.lto_priv>, 0x7f1dabce62b5, 0x5634e33f93c4, 0x0, 0x5634e11da314, 0x7f1db0e68705, 0x53474e, 0x7f1daf5e3400, 0x7fffdb8ca510, 0x1cdd2cc6a070d500, 0x9510, 0x5634e11e0d60, 0x7fffdb8ca1e0, 0x60, 0x5634e33f93c4, 0x0, 0x5634e1250020 <main_thread.lto_priv>, 0x5634e0fdf8c5 <top_level_2+725>, 0x5634e11da314, 0x7f1daf5e3f12 <malloc+434>, 0x15, 0x30}
        i = <optimized out>
        prev_modiff = 42
        prev_buffer = 0x7f1dab497708
#17 0x00005634e109aa57 in internal_condition_case
    (bfun=0x5634e0fe18c0 <command_loop_1>, handlers=<optimized out>, hfun=0x5634e0fdf320 <cmd_error>)
    at eval.c:1474
        val = <optimized out>
        c = 0x5634e33fd350
#18 0x00005634e0fdf5de in command_loop_2 (handlers=handlers <at> entry=0x90) at keyboard.c:1133
        val = <optimized out>
#19 0x00005634e109a9ac in internal_catch
    (tag=<optimized out>, func=0x5634e0fdf5b0 <command_loop_2>, arg=0x90) at eval.c:1197
        val = <optimized out>
        c = 0x5634e33fcde0
#20 0x00005634e0fe13a9 in command_loop () at keyboard.c:1111
#21 0x00005634e11cf8a0 in recursive_edit_1.isra.0 () at keyboard.c:720
        val = <optimized out>
#22 0x00005634e0fe188c in Frecursive_edit () at keyboard.c:803
        buffer = <optimized out>
#23 0x00005634e0ed5b9d in main (argc=<optimized out>, argv=0x7fffdb8ca628) at emacs.c:2529
        stack_bottom_variable = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = <optimized out>
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = false
        rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
        lc_all = <optimized out>
        sockfd = -1
        module_assertions = <optimized out>
(gdb) frame 8
#8  pgtk_handle_selection_request (event=0x7fffdb8c9420) at pgtkselect.c:573
573	 local_selection_data = LOCAL_SELECTION (selection_symbol, dpyinfo);
(gdb) p *event
$2 = {kind = SELECTION_REQUEST_EVENT, dpyinfo = 0xe35f53a0, requestor = 0x5634e3756330,
  selection = 0x45, target = 0x4c, property = 0x5d, time = 0}
(gdb) p *event->selection
$3 = <incomplete type>
(gdb) p *event->dpyinfo
Cannot access memory at address 0xe35f53a0
(gdb) p kbd_buffer[1856].sie
$4 = {kind = NO_EVENT, dpyinfo = 0x0, requestor = 0x0, selection = 0x0, target = 0x0, property = 0x0,
  time = 0}
(gdb)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Fri, 26 May 2023 00:35:02 GMT) Full text and rfc822 format available.

Message #44 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Fri, 26 May 2023 08:33:52 +0800
Leonardo Hernández Hernández <leohdz172 <at> proton.me> writes:

> On Thu, May 25, 2023 at 04:35:56AM -0600, Po Lu wrote:
>> OK, thanks.  Does the crash still happen with this?
>> 
>> diff --git a/src/pgtkterm.c b/src/pgtkterm.c
>> index b8c626d81d8..bbe68f04adc 100644
>> --- a/src/pgtkterm.c
>> +++ b/src/pgtkterm.c
>> @@ -6606,8 +6606,7 @@ pgtk_selection_event (GtkWidget *widget, GdkEvent *event,
>> 
>>    if (event->type == GDK_PROPERTY_NOTIFY)
>>      pgtk_handle_property_notify (&event->property);
>> -  else if (event->type == GDK_SELECTION_CLEAR
>> -	   || event->type == GDK_SELECTION_REQUEST)
>> +  else if (event->type == GDK_SELECTION_REQUEST)
>>      {
>>        f = pgtk_find_selection_owner (event->selection.window);
>> 
>
> The crash does not happen when copying text from outside emacs,
> however it crashes when pasting text killed from emacs,
> for example, open `emacs -Q` kill some text and try to paste that
> text outside emacs (just run `wl-paste`)

What if you apply this change?

diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index b8c626d81d8..bfad949941b 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -376,11 +376,16 @@ mark_pgtkterm (void)
   for (i = 0; i < n; i++)
     {
       union buffered_input_event *ev = &evq->q[i];
-      mark_object (ev->ie.x);
-      mark_object (ev->ie.y);
-      mark_object (ev->ie.frame_or_window);
-      mark_object (ev->ie.arg);
-      mark_object (ev->ie.device);
+
+      if (ev->ie.type != SELECTION_CLEAR_EVENT
+	  && ev->ie.type != SELECTION_REQUEST_EVENT)
+	{
+	  mark_object (ev->ie.x);
+	  mark_object (ev->ie.y);
+	  mark_object (ev->ie.frame_or_window);
+	  mark_object (ev->ie.arg);
+	  mark_object (ev->ie.device);
+	}
     }
 
   for (dpyinfo = x_display_list; dpyinfo;




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Fri, 26 May 2023 02:03:01 GMT) Full text and rfc822 format available.

Message #47 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Fri, 26 May 2023 02:01:39 +0000
On Thu, May 25, 2023 at 06:33:52PM -0600, Po Lu wrote:
> What if you apply this change?
> 
> diff --git a/src/pgtkterm.c b/src/pgtkterm.c
> index b8c626d81d8..bfad949941b 100644
> --- a/src/pgtkterm.c
> +++ b/src/pgtkterm.c
> @@ -376,11 +376,16 @@ mark_pgtkterm (void)
>    for (i = 0; i < n; i++)
>      {
>        union buffered_input_event *ev = &evq->q[i];
> -      mark_object (ev->ie.x);
> -      mark_object (ev->ie.y);
> -      mark_object (ev->ie.frame_or_window);
> -      mark_object (ev->ie.arg);
> -      mark_object (ev->ie.device);
> +
> +      if (ev->ie.type != SELECTION_CLEAR_EVENT
> +	  && ev->ie.type != SELECTION_REQUEST_EVENT)
> +	{
> +	  mark_object (ev->ie.x);
> +	  mark_object (ev->ie.y);
> +	  mark_object (ev->ie.frame_or_window);
> +	  mark_object (ev->ie.arg);
> +	  mark_object (ev->ie.device);
> +	}
>      }
> 
>    for (dpyinfo = x_display_list; dpyinfo;

I did not apply the patch, instead I updated to 42052686752e399e778d33401dd621afbac0071d
which is basically the same patch. It still crashes (the same way I reported first).
Here the backtrace:
(gdb) bt full
#0  0x00007f1c8c2ad8ec in  () at /usr/lib64/libc.so.6
#1  0x00007f1c8c25e3e2 in raise () at /usr/lib64/libc.so.6
#2  0x0000558328bcdc78 in terminate_due_to_signal (sig=11, backtrace_limit=<optimized out>)
    at emacs.c:464
#3  0x0000558328bceacb in handle_fatal_signal (sig=11) at sysdep.c:1783
        fatal = <optimized out>
#4  deliver_thread_signal (handler=<optimized out>, sig=11) at sysdep.c:1775
        fatal = <optimized out>
#5  deliver_fatal_thread_signal (sig=11) at sysdep.c:1795
        fatal = <optimized out>
#6  handle_sigsegv (sig=11, siginfo=0x558329455cb0 <sigsegv_stack+64496>, arg=<optimized out>)
    at sysdep.c:1888
        fatal = <optimized out>
#7  0x00007f1c8c25e490 in <signal handler called> () at /usr/lib64/libc.so.6
#8  0x0000558328e86fb9 in pgtk_handle_selection_clear (event=<optimized out>) at pgtkselect.c:742
        selection = <optimized out>
        changed_owner_time = 0
        selection_symbol = <optimized out>
        local_selection_data = <optimized out>
        local_selection_time = <optimized out>
        dpyinfo = 0x29baeab0
        Vselection_alist = <optimized out>
#9  0x0000558328cea9c6 in pgtk_handle_selection_event (event=0x7fffe2a229b0) at pgtkselect.c:782
        event = 0x558329405c80 <kbd_buffer+1152>
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x29baeab0, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        moved_events = <optimized out>
#10 process_special_events () at keyboard.c:4449
        event = 0x558329405c80 <kbd_buffer+1152>
        copy = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x29baeab0, requestor = 0x0, selection = 0x45, target = 0x0, property = 0x0, time = 0}
        moved_events = <optimized out>
#11 0x0000558328cebbcd in swallow_events (do_display=true) at keyboard.c:4489
        old_timers_run = <optimized out>
#12 0x0000558328e0789c in wait_reading_process_output
    (time_limit=<optimized out>, nsecs=<optimized out>, read_kbd=<optimized out>, do_display=<optimized out>, wait_for_cell=<optimized out>, wait_proc=<optimized out>, just_wait_proc=<optimized out>)
    at process.c:5781
        leave = false
        wrapped = <optimized out>
        process_skipped = <optimized out>
        channel_start = <optimized out>
        child_fd = <optimized out>
        channel = <optimized out>
        nfds = <optimized out>
        Available = {fds_bits = {16, 0 <repeats 15 times>}}
        Writeok = {fds_bits = {0 <repeats 16 times>}}
        check_write = true
        check_delay = <optimized out>
        no_avail = false
        xerrno = 11
        proc = <optimized out>
        timeout = {tv_sec = 0, tv_nsec = 0}
        end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        timer_delay = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        got_output_end_time = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        wait = <optimized out>
        got_some_output = <optimized out>
        prev_wait_proc_nbytes_read = <optimized out>
        retry_for_async = <optimized out>
        count = {bytes = <optimized out>}
        now = {tv_sec = <optimized out>, tv_nsec = <optimized out>}
        last_read_channel = -1
#13 0x0000558328be8350 in sit_for
    (timeout=<optimized out>, reading=<optimized out>, display_option=<optimized out>) at dispnew.c:6264
        sec = 30
        nsec = 0
        do_display = <optimized out>
        curbuf_eq_winbuf = true
        nbytes = <optimized out>
#14 0x0000558328cf44d5 in read_char
    (commandflag=1, map=0x55832a17ef73, prev_event=0x0, used_mouse_menu=0x7fffe2a234ab, end_time=0x0)
    at keyboard.c:2881
        delay_level = <optimized out>
        buffer_size = <optimized out>
        c = 0x0
        local_getcjmp = {{__jmpbuf = {94021820932736, -961532412328081999, 1, 139760518129416, 0, 94021828021619, -961532411696839247, -6458610983165819471}, __mask_was_saved = 0, __saved_mask = {__val = {94021814991392, 94021835287715, 586, 2, 94021815006159, 140736995668736, 40128, 140736995668624, 0, 0, 139760518129421, 0, 94021835287715, 0, 146, 147}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x558329b292d0
#15 0x0000558328ea2417 in read_key_sequence.constprop.0
    (keybuf=<optimized out>, prevent_redisplay=false, fix_current_buffer=<optimized out>, can_return_switch_frame=<optimized out>, dont_downcase_last=<optimized out>, prompt=<optimized out>) at keyboard.c:10083
        interrupted_kboard = 0x558329b292d0
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 0x55832a17ef73
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {parent = 0x5583299bd393, map = 0x5583299bd393, start = 0, end = 0}
        keytran = {parent = 0x7f1c888080f3, map = 0x7f1c888080f3, start = 0, end = 0}
        indec = {parent = 0x5583299bd3a3, map = 0x5583299bd3a3, start = 0, end = 0}
        shift_translated = <optimized out>
        delayed_switch_frame = <optimized out>
        original_uppercase = <optimized out>
        original_uppercase_position = <optimized out>
        dummyflag = false
        fake_prefixed_keys = 0x0
        first_event = 0x0
        second_event = <optimized out>
#16 0x0000558328ce7b6a in command_loop_1 () at keyboard.c:1384
        cmd = <optimized out>
        keybuf = {0x5e, 0x558328da6526 <eval_sub+1142>, 0x55832996a510, 0x558328dff13c <exec_byte_code+508>, 0x0, 0x80, 0x0, 0x7f1c8850dbc8, 0x558328f56020 <main_thread.lto_priv>, 0x7f1c888e52e2, 0x5583299b03c4, 0x0, 0x558328ee0314, 0x7f1c8dbc3705, 0x5441465f53554244, 0x7f1c8c2bb400, 0x7fffe2a23aa0, 0xa6ec1548f4ad3200, 0x9540, 0x558328ee6d80, 0x7fffe2a23770, 0x60, 0x5583299b03c4, 0x0, 0x558328f56020 <main_thread.lto_priv>, 0x558328ce58a5 <top_level_2+725>, 0x558328ee0314, 0x7f1c8c2bbf12 <malloc+434>, 0x15, 0x30}
        i = <optimized out>
        prev_modiff = 34
        prev_buffer = 0x7f1c88096708
#17 0x0000558328da0907 in internal_condition_case
    (bfun=0x558328ce78a0 <command_loop_1>, handlers=<optimized out>, hfun=0x558328ce5300 <cmd_error>)
    at eval.c:1474
        val = <optimized out>
        c = 0x5583299b4350
#18 0x0000558328ce55be in command_loop_2 (handlers=handlers <at> entry=0x90) at keyboard.c:1133
        val = <optimized out>
#19 0x0000558328da085c in internal_catch
    (tag=<optimized out>, func=0x558328ce5590 <command_loop_2>, arg=0x90) at eval.c:1197
        val = <optimized out>
        c = 0x5583299b3de0
#20 0x0000558328ce7389 in command_loop () at keyboard.c:1111
#21 0x0000558328ed5910 in recursive_edit_1.isra.0 () at keyboard.c:720
        val = <optimized out>
#22 0x0000558328ce786c in Frecursive_edit () at keyboard.c:803
        buffer = <optimized out>
#23 0x0000558328bdbbad in main (argc=<optimized out>, argv=0x7fffe2a23bb8) at emacs.c:2529
        stack_bottom_variable = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = <optimized out>
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = false
        rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
        lc_all = <optimized out>
        sockfd = -1
        module_assertions = <optimized out>
(gdb) frame 9
#9  0x0000558328cea9c6 in pgtk_handle_selection_event (event=0x7fffe2a229b0) at pgtkselect.c:782
782	   pgtk_handle_selection_clear (event);
(gdb) p *event
$1 = {kind = SELECTION_CLEAR_EVENT, dpyinfo = 0x29baeab0, requestor = 0x0, selection = 0x45,
  target = 0x0, property = 0x0, time = 0}
(gdb) p *event->selection
$2 = <incomplete type>
(gdb) p *event->dpyinfo
Cannot access memory at address 0x29baeab0
(gdb) p kbd_buffer[1152].sie
$3 = {kind = NO_EVENT, dpyinfo = 0x0, requestor = 0x0, selection = 0x0, target = 0x0, property = 0x0,
  time = 0}
(gdb) p x_display_list
$4 = (struct pgtk_display_info *) 0x558329baeab0
(gdb) p *x_display_list
$5 = {next = 0x0, terminal = 0x558329a8e7f0, {gdpy = 0x558329ac4b10, display = 0x558329ac4b10}, name_list_element = 0x5583299bd383, reference_count = 1, x_id = 1,
  x_id_name = 0x558329b781a0 "emacs <at> gentoo", n_fonts = 5, smallest_char_width = 2, smallest_font_height = 15, bitmaps = 0x0, bitmaps_size = 0, bitmaps_last = 0, resx = 96, resy = 96,
  grabbed = 0, n_planes = 32, color_p = 1, icon_bitmap_id = -2, root_window = 42, rdb = 0x0, vertical_scroll_bar_cursor = 0x558329b49230, horizontal_scroll_bar_cursor = 0x558329bfbe30,
  mouse_highlight = {mouse_face_beg_row = -1, mouse_face_beg_col = -1, mouse_face_beg_x = 0, mouse_face_end_row = -1, mouse_face_end_col = -1, mouse_face_end_x = 0, mouse_face_window = 0x0,
    mouse_face_face_id = 0, mouse_face_overlay = 0x0, mouse_face_mouse_frame = 0x0, mouse_face_mouse_x = 0, mouse_face_mouse_y = 0, mouse_face_past_end = false, mouse_face_defer = false,
    mouse_face_hidden = false}, highlight_frame = 0x0, x_focus_frame = 0x0, x_focus_event_frame = 0x0, last_mouse_frame = 0x0, last_mouse_motion_frame = 0x0, last_mouse_motion_x = 0,
  last_mouse_motion_y = 0, last_mouse_glyph = {x = 0, y = 0, width = 0, height = 0}, last_mouse_movement_time = 0, last_user_time = 10173018, last_mouse_scroll_bar = 0x0,
  invisible_cursor = 0x558329bb7b30, xg_cursor = 0x558329bb72b0, devices = 0x558329c0e860, last_mouse_glyph_frame = 0x0, last_click_event = 0x0, im = {context = 0x558329b952b0,
    focused_frame = 0x0}, scroll = {acc_x = 0, acc_y = 0, x_per_char = 1, y_per_line = 1}, connection = 4}
(gdb)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Fri, 26 May 2023 03:25:01 GMT) Full text and rfc822 format available.

Message #50 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91; PGTK Emacs crashes after clearing the
 clipboard
Date: Fri, 26 May 2023 11:24:31 +0800
Would you please:

  (gdb) disassemble pgtk_selection_event
  (gdb) disassemble evq_enqueue
  (gdb) disassemble evq_flush

thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63614; Package emacs. (Fri, 26 May 2023 03:30:02 GMT) Full text and rfc822 format available.

Message #53 received at 63614 <at> debbugs.gnu.org (full text, mbox):

From: Leonardo Hernández Hernández <leohdz172 <at> proton.me>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 63614 <at> debbugs.gnu.org
Subject: Re: bug#63614: 29.0.91;
 PGTK Emacs crashes after clearing the clipboard
Date: Fri, 26 May 2023 03:29:13 +0000
On Thu, May 25, 2023 at 09:24:31PM -0600, Po Lu wrote:
> Would you please:
> 
>   (gdb) disassemble pgtk_selection_event
>   (gdb) disassemble evq_enqueue
>   (gdb) disassemble evq_flush
> 
> thanks.

(gdb) disassemble pgtk_selection_event
Dump of assembler code for function pgtk_selection_event:
   0x0000558328e80840 <+0>:	push   %rbp
   0x0000558328e80841 <+1>:	mov    %rsp,%rbp
   0x0000558328e80844 <+4>:	push   %r14
   0x0000558328e80846 <+6>:	push   %r13
   0x0000558328e80848 <+8>:	push   %r12
   0x0000558328e8084a <+10>:	push   %rbx
   0x0000558328e8084b <+11>:	mov    %rsi,%r12
   0x0000558328e8084e <+14>:	sub    $0x50,%rsp
   0x0000558328e80852 <+18>:	mov    %fs:0x28,%rax
   0x0000558328e8085b <+27>:	mov    %rax,0x48(%rsp)
   0x0000558328e80860 <+32>:	mov    (%rsi),%eax
   0x0000558328e80862 <+34>:	cmp    $0x10,%eax
   0x0000558328e80865 <+37>:	je     0x558328e80920 <pgtk_selection_event+224>
   0x0000558328e8086b <+43>:	lea    -0x11(%rax),%edx
   0x0000558328e8086e <+46>:	cmp    $0x1,%edx
   0x0000558328e80871 <+49>:	jbe    0x558328e808b0 <pgtk_selection_event+112>
   0x0000558328e80873 <+51>:	cmp    $0x13,%eax
   0x0000558328e80876 <+54>:	je     0x558328e809a0 <pgtk_selection_event+352>
   0x0000558328e8087c <+60>:	xor    %eax,%eax
   0x0000558328e8087e <+62>:	xchg   %ax,%ax
   0x0000558328e80880 <+64>:	mov    0x48(%rsp),%rdx
   0x0000558328e80885 <+69>:	sub    %fs:0x28,%rdx
   0x0000558328e8088e <+78>:	jne    0x558328e80a90 <pgtk_selection_event+592>
   0x0000558328e80894 <+84>:	add    $0x50,%rsp
   0x0000558328e80898 <+88>:	pop    %rbx
   0x0000558328e80899 <+89>:	pop    %r12
   0x0000558328e8089b <+91>:	pop    %r13
   0x0000558328e8089d <+93>:	pop    %r14
   0x0000558328e8089f <+95>:	pop    %rbp
   0x0000558328e808a0 <+96>:	ret
   0x0000558328e808a1 <+97>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e808ac <+108>:	nopl   0x0(%rax)
   0x0000558328e808b0 <+112>:	mov    0x54d951(%rip),%rbx        # 0x5583293ce208 <Vframe_list>
   0x0000558328e808b7 <+119>:	mov    0x8(%rsi),%r14
   0x0000558328e808bb <+123>:	lea    -0x3(%rbx),%eax
   0x0000558328e808be <+126>:	test   $0x7,%al
   0x0000558328e808c0 <+128>:	je     0x558328e808ff <pgtk_selection_event+191>
   0x0000558328e808c2 <+130>:	jmp    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e808c4 <+132>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e808cf <+143>:	nop
   0x0000558328e808d0 <+144>:	mov    0x1d3(%r13),%rax
   0x0000558328e808d7 <+151>:	mov    0x198(%rax),%rdi
   0x0000558328e808de <+158>:	call   0x558328bc8b10 <gtk_widget_get_window <at> plt>
   0x0000558328e808e3 <+163>:	cmp    %rax,%r14
   0x0000558328e808e6 <+166>:	je     0x558328e809d2 <pgtk_selection_event+402>
   0x0000558328e808ec <+172>:	nopl   0x0(%rax)
   0x0000558328e808f0 <+176>:	mov    0x5(%rbx),%rbx
   0x0000558328e808f4 <+180>:	lea    -0x3(%rbx),%eax
   0x0000558328e808f7 <+183>:	test   $0x7,%al
   0x0000558328e808f9 <+185>:	jne    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e808ff <+191>:	mov    -0x3(%rbx),%r13
   0x0000558328e80903 <+195>:	movzbl 0x106(%r13),%eax
   0x0000558328e8090b <+203>:	and    $0xe,%eax
   0x0000558328e8090e <+206>:	cmp    $0xc,%al
   0x0000558328e80910 <+208>:	jne    0x558328e808f0 <pgtk_selection_event+176>
   0x0000558328e80912 <+210>:	jmp    0x558328e808d0 <pgtk_selection_event+144>
   0x0000558328e80914 <+212>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e8091f <+223>:	nop
   0x0000558328e80920 <+224>:	mov    0x8(%rsi),%rdi
   0x0000558328e80924 <+228>:	call   0x558328bc8140 <gdk_window_get_display <at> plt>
   0x0000558328e80929 <+233>:	mov    0x5e6fd8(%rip),%rdx        # 0x558329467908 <property_change_wait_list>
   0x0000558328e80930 <+240>:	test   %rdx,%rdx
   0x0000558328e80933 <+243>:	je     0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e80939 <+249>:	cmpb   $0x0,0x24(%rdx)
   0x0000558328e8093d <+253>:	je     0x558328e80953 <pgtk_selection_event+275>
   0x0000558328e8093f <+255>:	nop
   0x0000558328e80940 <+256>:	mov    0x28(%rdx),%rdx
   0x0000558328e80944 <+260>:	test   %rdx,%rdx
   0x0000558328e80947 <+263>:	je     0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e8094d <+269>:	cmpb   $0x0,0x24(%rdx)
   0x0000558328e80951 <+273>:	jne    0x558328e80940 <pgtk_selection_event+256>
   0x0000558328e80953 <+275>:	mov    0x18(%r12),%rcx
   0x0000558328e80958 <+280>:	cmp    %rcx,0x18(%rdx)
   0x0000558328e8095c <+284>:	jne    0x558328e80940 <pgtk_selection_event+256>
   0x0000558328e8095e <+286>:	mov    0x8(%r12),%rdi
   0x0000558328e80963 <+291>:	cmp    %rdi,0x10(%rdx)
   0x0000558328e80967 <+295>:	jne    0x558328e80940 <pgtk_selection_event+256>
   0x0000558328e80969 <+297>:	cmp    0x8(%rdx),%rax
   0x0000558328e8096d <+301>:	jne    0x558328e80940 <pgtk_selection_event+256>
   0x0000558328e8096f <+303>:	mov    0x24(%r12),%esi
   0x0000558328e80974 <+308>:	cmp    %esi,0x20(%rdx)
   0x0000558328e80977 <+311>:	jne    0x558328e80940 <pgtk_selection_event+256>
   0x0000558328e80979 <+313>:	cmp    %rdx,0x5e6f80(%rip)        # 0x558329467900 <property_change_reply_object>
   0x0000558328e80980 <+320>:	movb   $0x1,0x24(%rdx)
   0x0000558328e80984 <+324>:	jne    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e8098a <+330>:	mov    0x5e6f27(%rip),%rax        # 0x5583294678b8 <property_change_reply.lto_priv.0>
   0x0000558328e80991 <+337>:	movq   $0x30,-0x3(%rax)
   0x0000558328e80999 <+345>:	jmp    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e8099e <+350>:	xchg   %ax,%ax
   0x0000558328e809a0 <+352>:	mov    0x5e6f21(%rip),%rax        # 0x5583294678c8 <reading_which_selection.lto_priv.0>
   0x0000558328e809a7 <+359>:	cmp    %rax,0x18(%rsi)
   0x0000558328e809ab <+363>:	jne    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e809b1 <+369>:	cmpq   $0x1,0x28(%rsi)
   0x0000558328e809b6 <+374>:	mov    0x5e6f03(%rip),%rdx        # 0x5583294678c0 <reading_selection_reply.lto_priv.0>
   0x0000558328e809bd <+381>:	sbb    %rax,%rax
   0x0000558328e809c0 <+384>:	and    $0x90,%eax
   0x0000558328e809c5 <+389>:	add    $0x30,%rax
   0x0000558328e809c9 <+393>:	mov    %rax,-0x3(%rdx)
   0x0000558328e809cd <+397>:	jmp    0x558328e8087c <pgtk_selection_event+60>
   0x0000558328e809d2 <+402>:	mov    (%r12),%eax
   0x0000558328e809d6 <+406>:	vpxor  %xmm0,%xmm0,%xmm0
   0x0000558328e809da <+410>:	movq   $0x30,0x38(%rsp)
   0x0000558328e809e3 <+419>:	vextracti128 $0x1,%ymm0,0x10(%rsp)
   0x0000558328e809eb <+427>:	vmovdqa %xmm0,(%rsp)
   0x0000558328e809f0 <+432>:	vextracti128 $0x1,%ymm0,0x18(%rsp)
   0x0000558328e809f8 <+440>:	vextracti128 $0x1,%ymm0,0x28(%rsp)
   0x0000558328e80a00 <+448>:	cmp    $0x11,%eax
   0x0000558328e80a03 <+451>:	je     0x558328e80a62 <pgtk_selection_event+546>
   0x0000558328e80a05 <+453>:	mov    0x1d3(%r13),%rdx
   0x0000558328e80a0c <+460>:	movw   $0xa,(%rsp)
   0x0000558328e80a12 <+466>:	mov    0x138(%rdx),%rdx
   0x0000558328e80a19 <+473>:	mov    %rdx,0x8(%rsp)
   0x0000558328e80a1e <+478>:	mov    0x18(%r12),%rdx
   0x0000558328e80a23 <+483>:	mov    %rdx,0x18(%rsp)
   0x0000558328e80a28 <+488>:	mov    0x30(%r12),%edx
   0x0000558328e80a2d <+493>:	mov    %edx,0x30(%rsp)
   0x0000558328e80a31 <+497>:	cmp    $0x12,%eax
   0x0000558328e80a34 <+500>:	jne    0x558328e80a4d <pgtk_selection_event+525>
   0x0000558328e80a36 <+502>:	vmovdqu 0x20(%r12),%xmm1
   0x0000558328e80a3d <+509>:	mov    0x38(%r12),%rax
   0x0000558328e80a42 <+514>:	mov    %rax,0x10(%rsp)
   0x0000558328e80a47 <+519>:	vmovdqa %xmm1,0x20(%rsp)
   0x0000558328e80a4d <+525>:	mov    %rsp,%rdi
   0x0000558328e80a50 <+528>:	vzeroupper
   0x0000558328e80a53 <+531>:	call   0x558328e78630 <evq_enqueue>
   0x0000558328e80a58 <+536>:	mov    $0x1,%eax
   0x0000558328e80a5d <+541>:	jmp    0x558328e80880 <pgtk_selection_event+64>
   0x0000558328e80a62 <+546>:	mov    0x1d3(%r13),%rax
   0x0000558328e80a69 <+553>:	movw   $0xb,(%rsp)
   0x0000558328e80a6f <+559>:	mov    0x138(%rax),%rax
   0x0000558328e80a76 <+566>:	mov    %rax,0x8(%rsp)
   0x0000558328e80a7b <+571>:	mov    0x18(%r12),%rax
   0x0000558328e80a80 <+576>:	mov    %rax,0x18(%rsp)
   0x0000558328e80a85 <+581>:	mov    0x30(%r12),%eax
   0x0000558328e80a8a <+586>:	mov    %eax,0x30(%rsp)
   0x0000558328e80a8e <+590>:	jmp    0x558328e80a4d <pgtk_selection_event+525>
   0x0000558328e80a90 <+592>:	call   0x558328bc6230 <__stack_chk_fail <at> plt>
End of assembler dump.
(gdb) disassemble evq_enqueue
Dump of assembler code for function evq_enqueue:
Address range 0x558328e78630 to 0x558328e78865:
   0x0000558328e78630 <+0>:	mov    0x5e3356(%rip),%edx        # 0x55832945b98c <event_q.lto_priv.0+12>
   0x0000558328e78636 <+6>:	push   %rbp
   0x0000558328e78637 <+7>:	mov    %rsp,%rbp
   0x0000558328e7863a <+10>:	push   %r14
   0x0000558328e7863c <+12>:	push   %r13
   0x0000558328e7863e <+14>:	push   %r12
   0x0000558328e78640 <+16>:	mov    %rdi,%r12
   0x0000558328e78643 <+19>:	push   %rbx
   0x0000558328e78644 <+20>:	test   %edx,%edx
   0x0000558328e78646 <+22>:	je     0x558328e78790 <evq_enqueue+352>
   0x0000558328e7864c <+28>:	movslq 0x5e3335(%rip),%rax        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e78653 <+35>:	mov    0x5e3326(%rip),%rbx        # 0x55832945b980 <event_q.lto_priv.0>
   0x0000558328e7865a <+42>:	cmp    %eax,%edx
   0x0000558328e7865c <+44>:	jle    0x558328e78710 <evq_enqueue+224>
   0x0000558328e78662 <+50>:	vmovdqu (%r12),%ymm0
   0x0000558328e78668 <+56>:	lea    0x1(%rax),%edx
   0x0000558328e7866b <+59>:	shl    $0x6,%rax
   0x0000558328e7866f <+63>:	add    %rbx,%rax
   0x0000558328e78672 <+66>:	mov    %edx,0x5e3310(%rip)        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e78678 <+72>:	vmovdqu %ymm0,(%rax)
   0x0000558328e7867c <+76>:	vmovdqu 0x20(%r12),%ymm1
   0x0000558328e78683 <+83>:	vmovdqu %ymm1,0x20(%rax)
   0x0000558328e78688 <+88>:	movzwl (%r12),%eax
   0x0000558328e7868d <+93>:	sub    $0xa,%eax
   0x0000558328e78690 <+96>:	cmp    $0x1,%ax
   0x0000558328e78694 <+100>:	jbe    0x558328e786f8 <evq_enqueue+200>
   0x0000558328e78696 <+102>:	mov    0x28(%r12),%rax
   0x0000558328e7869b <+107>:	lea    -0x5(%rax),%edx
   0x0000558328e7869e <+110>:	and    $0x7,%edx
   0x0000558328e786a1 <+113>:	jne    0x558328e786f8 <evq_enqueue+200>
   0x0000558328e786a3 <+115>:	movabs $0x400000003f000000,%rdx
   0x0000558328e786ad <+125>:	and    -0x5(%rax),%rdx
   0x0000558328e786b1 <+129>:	movabs $0x400000000b000000,%rcx
   0x0000558328e786bb <+139>:	cmp    %rcx,%rdx
   0x0000558328e786be <+142>:	je     0x558328e78800 <evq_enqueue+464>
   0x0000558328e786c4 <+148>:	sub    $0x1000000,%rcx
   0x0000558328e786cb <+155>:	cmp    %rcx,%rdx
   0x0000558328e786ce <+158>:	jne    0x558328e786f8 <evq_enqueue+200>
   0x0000558328e786d0 <+160>:	sub    $0x5,%rax
   0x0000558328e786d4 <+164>:	mov    0x1d8(%rax),%rax
   0x0000558328e786db <+171>:	mov    0x20(%r12),%rdx
   0x0000558328e786e0 <+176>:	mov    0x138(%rax),%rax
   0x0000558328e786e7 <+183>:	mov    0x130(%rax),%ecx
   0x0000558328e786ed <+189>:	cmp    %rdx,%rcx
   0x0000558328e786f0 <+192>:	jae    0x558328e786f8 <evq_enqueue+200>
   0x0000558328e786f2 <+194>:	mov    %edx,0x130(%rax)
   0x0000558328e786f8 <+200>:	vzeroupper
   0x0000558328e786fb <+203>:	pop    %rbx
   0x0000558328e786fc <+204>:	mov    $0x1d,%edi
   0x0000558328e78701 <+209>:	pop    %r12
   0x0000558328e78703 <+211>:	pop    %r13
   0x0000558328e78705 <+213>:	pop    %r14
   0x0000558328e78707 <+215>:	pop    %rbp
   0x0000558328e78708 <+216>:	jmp    0x558328bc88b0 <raise <at> plt>
   0x0000558328e7870d <+221>:	nopl   (%rax)
   0x0000558328e78710 <+224>:	mov    %edx,%r13d
   0x0000558328e78713 <+227>:	shr    $0x1f,%r13d
   0x0000558328e78717 <+231>:	add    %edx,%r13d
   0x0000558328e7871a <+234>:	sar    %r13d
   0x0000558328e7871d <+237>:	add    %edx,%r13d
   0x0000558328e78720 <+240>:	mov    %r13d,0x5e3265(%rip)        # 0x55832945b98c <event_q.lto_priv.0+12>
   0x0000558328e78727 <+247>:	movslq %r13d,%r13
   0x0000558328e7872a <+250>:	shl    $0x6,%r13
   0x0000558328e7872e <+254>:	test   %rbx,%rbx
   0x0000558328e78731 <+257>:	je     0x558328e78810 <evq_enqueue+480>
   0x0000558328e78737 <+263>:	mov    %rbx,%rdi
   0x0000558328e7873a <+266>:	mov    %r13,%rsi
   0x0000558328e7873d <+269>:	call   0x558328bc5560 <realloc <at> plt>
   0x0000558328e78742 <+274>:	mov    %rax,%r14
   0x0000558328e78745 <+277>:	mov    %rax,%rbx
   0x0000558328e78748 <+280>:	or     %r13,%r14
   0x0000558328e7874b <+283>:	jne    0x558328e7885d <evq_enqueue+557>
   0x0000558328e78751 <+289>:	mov    $0x8,%edi
   0x0000558328e78756 <+294>:	call   0x558328bc8b60 <malloc <at> plt>
   0x0000558328e7875b <+299>:	mov    %rax,%rbx
   0x0000558328e7875e <+302>:	test   %rbx,%rbx
   0x0000558328e78761 <+305>:	je     0x558328bd7e27 <evq_enqueue-2754569>
   0x0000558328e78767 <+311>:	cmpb   $0x0,0x555aee(%rip)        # 0x5583293ce25c <profiler_memory_running>
   0x0000558328e7876e <+318>:	jne    0x558328e78850 <evq_enqueue+544>
   0x0000558328e78774 <+324>:	movslq 0x5e320d(%rip),%rax        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e7877b <+331>:	mov    %rbx,0x5e31fe(%rip)        # 0x55832945b980 <event_q.lto_priv.0>
   0x0000558328e78782 <+338>:	jmp    0x558328e78662 <evq_enqueue+50>
   0x0000558328e78787 <+343>:	nopw   0x0(%rax,%rax,1)
   0x0000558328e78790 <+352>:	mov    $0x100,%edi
   0x0000558328e78795 <+357>:	movl   $0x4,0x5e31ed(%rip)        # 0x55832945b98c <event_q.lto_priv.0+12>
   0x0000558328e7879f <+367>:	call   0x558328bc8b60 <malloc <at> plt>
   0x0000558328e787a4 <+372>:	mov    %rax,%rbx
   0x0000558328e787a7 <+375>:	test   %rax,%rax
   0x0000558328e787aa <+378>:	je     0x558328bd7e1d <evq_enqueue.lto_priv.0.cold>
   0x0000558328e787b0 <+384>:	cmpb   $0x0,0x555aa5(%rip)        # 0x5583293ce25c <profiler_memory_running>
   0x0000558328e787b7 <+391>:	mov    $0x4,%edx
   0x0000558328e787bc <+396>:	jne    0x558328e78830 <evq_enqueue+512>
   0x0000558328e787be <+398>:	movslq 0x5e31c3(%rip),%rax        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e787c5 <+405>:	mov    %rbx,0x5e31b4(%rip)        # 0x55832945b980 <event_q.lto_priv.0>
   0x0000558328e787cc <+412>:	cmp    %edx,%eax
   0x0000558328e787ce <+414>:	jl     0x558328e78662 <evq_enqueue+50>
   0x0000558328e787d4 <+420>:	mov    %edx,%r13d
   0x0000558328e787d7 <+423>:	shr    $0x1f,%r13d
   0x0000558328e787db <+427>:	add    %edx,%r13d
   0x0000558328e787de <+430>:	sar    %r13d
   0x0000558328e787e1 <+433>:	add    %edx,%r13d
   0x0000558328e787e4 <+436>:	mov    %r13d,0x5e31a1(%rip)        # 0x55832945b98c <event_q.lto_priv.0+12>
   0x0000558328e787eb <+443>:	movslq %r13d,%r13
   0x0000558328e787ee <+446>:	shl    $0x6,%r13
   0x0000558328e787f2 <+450>:	jmp    0x558328e78737 <evq_enqueue+263>
   0x0000558328e787f7 <+455>:	nopw   0x0(%rax,%rax,1)
   0x0000558328e78800 <+464>:	mov    0x3(%rax),%rax
   0x0000558328e78804 <+468>:	sub    $0x5,%rax
   0x0000558328e78808 <+472>:	jmp    0x558328e786d4 <evq_enqueue+164>
   0x0000558328e7880d <+477>:	nopl   (%rax)
   0x0000558328e78810 <+480>:	mov    %r13,%rdi
   0x0000558328e78813 <+483>:	mov    %r13,%r14
   0x0000558328e78816 <+486>:	call   0x558328bc8b60 <malloc <at> plt>
   0x0000558328e7881b <+491>:	mov    %rax,%rbx
   0x0000558328e7881e <+494>:	jmp    0x558328e7875e <evq_enqueue+302>
   0x0000558328e78823 <+499>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e7882e <+510>:	xchg   %ax,%ax
   0x0000558328e78830 <+512>:	mov    $0x100,%edi
   0x0000558328e78835 <+517>:	call   0x558328e344c0 <malloc_probe>
   0x0000558328e7883a <+522>:	mov    0x5e314c(%rip),%edx        # 0x55832945b98c <event_q.lto_priv.0+12>
   0x0000558328e78840 <+528>:	jmp    0x558328e787be <evq_enqueue+398>
   0x0000558328e78845 <+533>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e78850 <+544>:	mov    %r14,%rdi
   0x0000558328e78853 <+547>:	call   0x558328e344c0 <malloc_probe>
   0x0000558328e78858 <+552>:	jmp    0x558328e78774 <evq_enqueue+324>
   0x0000558328e7885d <+557>:	mov    %r13,%r14
   0x0000558328e78860 <+560>:	jmp    0x558328e7875e <evq_enqueue+302>
Address range 0x558328bd7e1d to 0x558328bd7e2f:
   0x0000558328bd7e1d <-2754579>:	mov    $0x100,%edi
   0x0000558328bd7e22 <-2754574>:	call   0x558328bd00da <memory_full>
   0x0000558328bd7e27 <-2754569>:	mov    %r14,%rdi
   0x0000558328bd7e2a <-2754566>:	call   0x558328bd00da <memory_full>
End of assembler dump.
(gdb) disassemble evq_flush
Dump of assembler code for function evq_flush:
Address range 0x558328e725c0 to 0x558328e72a82:
   0x0000558328e725c0 <+0>:	push   %r15
   0x0000558328e725c2 <+2>:	push   %r14
   0x0000558328e725c4 <+4>:	push   %r13
   0x0000558328e725c6 <+6>:	push   %r12
   0x0000558328e725c8 <+8>:	push   %rbp
   0x0000558328e725c9 <+9>:	push   %rbx
   0x0000558328e725ca <+10>:	sub    $0xc8,%rsp
   0x0000558328e725d1 <+17>:	mov    0x5e93b1(%rip),%edx        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e725d7 <+23>:	mov    %fs:0x28,%rax
   0x0000558328e725e0 <+32>:	mov    %rax,0xb8(%rsp)
   0x0000558328e725e8 <+40>:	xor    %eax,%eax
   0x0000558328e725ea <+42>:	test   %edx,%edx
   0x0000558328e725ec <+44>:	jle    0x558328e7288f <evq_flush+719>
   0x0000558328e725f2 <+50>:	mov    %rdi,%rbx
   0x0000558328e725f5 <+53>:	xor    %r14d,%r14d
   0x0000558328e725f8 <+56>:	jmp    0x558328e726cf <evq_flush+271>
   0x0000558328e725fd <+61>:	nopl   (%rax)
   0x0000558328e72600 <+64>:	mov    0x5d31f9(%rip),%rdx        # 0x558329445800 <kbd_store_ptr>
   0x0000558328e72607 <+71>:	lea    0x5d31b2(%rip),%rcx        # 0x5583294457c0 <kbd_buffer+262080>
   0x0000558328e7260e <+78>:	lea    -0x3ffc0(%rcx),%rsi
   0x0000558328e72615 <+85>:	cmp    %rcx,%rdx
   0x0000558328e72618 <+88>:	mov    0x5d31e9(%rip),%rcx        # 0x558329445808 <kbd_fetch_ptr>
   0x0000558328e7261f <+95>:	lea    0x40(%rdx),%rax
   0x0000558328e72623 <+99>:	cmove  %rsi,%rax
   0x0000558328e72627 <+103>:	cmp    %rax,%rcx
   0x0000558328e7262a <+106>:	je     0x558328e72679 <evq_flush+185>
   0x0000558328e7262c <+108>:	vmovdqa 0x20(%rsp),%xmm4
   0x0000558328e72632 <+114>:	vmovdqa 0x10(%rsp),%xmm5
   0x0000558328e72638 <+120>:	vmovd  %xmm0,(%rdx)
   0x0000558328e7263c <+124>:	vmovq  %xmm1,0x4(%rdx)
   0x0000558328e72641 <+129>:	mov    %rax,0x5d31b8(%rip)        # 0x558329445800 <kbd_store_ptr>
   0x0000558328e72648 <+136>:	sub    %rcx,%rax
   0x0000558328e7264b <+139>:	mov    %r12,0x20(%rdx)
   0x0000558328e7264f <+143>:	sar    $0x6,%rax
   0x0000558328e72653 <+147>:	mov    %rbp,0x38(%rdx)
   0x0000558328e72657 <+151>:	vmovdqu %xmm4,0x10(%rdx)
   0x0000558328e7265c <+156>:	vmovdqu %xmm5,0x28(%rdx)
   0x0000558328e72661 <+161>:	mov    %eax,%edx
   0x0000558328e72663 <+163>:	sar    $0x13,%edx
   0x0000558328e72666 <+166>:	and    $0x1000,%edx
   0x0000558328e7266c <+172>:	add    %edx,%eax
   0x0000558328e7266e <+174>:	cmp    $0x800,%eax
   0x0000558328e72673 <+179>:	jg     0x558328e72820 <evq_flush+608>
   0x0000558328e72679 <+185>:	cmpq   $0x0,0x55c72f(%rip)        # 0x5583293cedb0 <globals+2864>
   0x0000558328e72681 <+193>:	je     0x558328e726be <evq_flush+254>
   0x0000558328e72683 <+195>:	sub    $0xa,%r13d
   0x0000558328e72687 <+199>:	xor    %edi,%edi
   0x0000558328e72689 <+201>:	cmp    $0x14,%r13w
   0x0000558328e7268e <+206>:	ja     0x558328e7269f <evq_flush+223>
   0x0000558328e72690 <+208>:	movzwl %r13w,%r13d
   0x0000558328e72694 <+212>:	lea    0x74725(%rip),%rax        # 0x558328ee6dc0 <CSWTCH.1515.lto_priv.0>
   0x0000558328e7269b <+219>:	mov    (%rax,%r13,8),%rdi
   0x0000558328e7269f <+223>:	mov    0x55c812(%rip),%rsi        # 0x5583293ceeb8 <globals+3128>
   0x0000558328e726a6 <+230>:	call   0x558328dae050 <Fmemq>
   0x0000558328e726ab <+235>:	test   %rax,%rax
   0x0000558328e726ae <+238>:	jne    0x558328e726be <evq_flush+254>
   0x0000558328e726b0 <+240>:	mov    0x55c6f9(%rip),%rax        # 0x5583293cedb0 <globals+2864>
   0x0000558328e726b7 <+247>:	mov    %rax,0x55c512(%rip)        # 0x5583293cebd0 <globals+2384>
   0x0000558328e726be <+254>:	mov    0x5e92c4(%rip),%edx        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e726c4 <+260>:	inc    %r14d
   0x0000558328e726c7 <+263>:	test   %edx,%edx
   0x0000558328e726c9 <+265>:	jle    0x558328e728a0 <evq_flush+736>
   0x0000558328e726cf <+271>:	lea    0x5e92aa(%rip),%rax        # 0x55832945b980 <event_q.lto_priv.0>
   0x0000558328e726d6 <+278>:	mov    (%rax),%rdi
   0x0000558328e726d9 <+281>:	vmovdqu 0x10(%rdi),%xmm2
   0x0000558328e726de <+286>:	vmovdqu 0x28(%rdi),%xmm3
   0x0000558328e726e3 <+291>:	vmovd  (%rdi),%xmm0
   0x0000558328e726e7 <+295>:	vmovq  0x4(%rdi),%xmm1
   0x0000558328e726ec <+300>:	mov    0x20(%rdi),%r12
   0x0000558328e726f0 <+304>:	mov    0x38(%rdi),%rbp
   0x0000558328e726f4 <+308>:	vpextrw $0x0,%xmm0,%r13d
   0x0000558328e726f9 <+313>:	vmovdqa %xmm2,0x20(%rsp)
   0x0000558328e726ff <+319>:	vmovdqa %xmm3,0x10(%rsp)
   0x0000558328e72705 <+325>:	cmp    $0x1,%edx
   0x0000558328e72708 <+328>:	je     0x558328e728d0 <evq_flush+784>
   0x0000558328e7270e <+334>:	dec    %edx
   0x0000558328e72710 <+336>:	lea    0x40(%rdi),%rsi
   0x0000558328e72714 <+340>:	vmovq  %xmm1,0x8(%rsp)
   0x0000558328e7271a <+346>:	vmovd  %xmm0,0x4(%rsp)
   0x0000558328e72720 <+352>:	mov    %rdx,%r15
   0x0000558328e72723 <+355>:	shl    $0x6,%rdx
   0x0000558328e72727 <+359>:	call   0x558328bc5870 <memmove <at> plt>
   0x0000558328e7272c <+364>:	vmovd  0x4(%rsp),%xmm0
   0x0000558328e72732 <+370>:	vmovq  0x8(%rsp),%xmm1
   0x0000558328e72738 <+376>:	mov    %r15d,%edx
   0x0000558328e7273b <+379>:	mov    %r15d,0x5e9246(%rip)        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e72742 <+386>:	test   %r13w,%r13w
   0x0000558328e72746 <+390>:	je     0x558328e72a7d <evq_flush+1213>
   0x0000558328e7274c <+396>:	test   %rbx,%rbx
   0x0000558328e7274f <+399>:	je     0x558328e7275b <evq_flush+411>
   0x0000558328e72751 <+401>:	cmpw   $0x0,(%rbx)
   0x0000558328e72755 <+405>:	jne    0x558328e726c4 <evq_flush+260>
   0x0000558328e7275b <+411>:	cmp    $0x1,%r13w
   0x0000558328e72760 <+416>:	jne    0x558328e72600 <evq_flush+64>
   0x0000558328e72766 <+422>:	vpextrd $0x1,%xmm1,%ecx
   0x0000558328e7276c <+428>:	vmovd  %xmm1,%esi
   0x0000558328e72770 <+432>:	movslq 0x593061(%rip),%r15        # 0x5583294057d8 <quit_char>
   0x0000558328e72777 <+439>:	movzbl %sil,%edi
   0x0000558328e7277b <+443>:	mov    %ecx,%eax
   0x0000558328e7277d <+445>:	and    $0x9c00000,%eax
   0x0000558328e72782 <+450>:	and    $0x4000000,%ecx
   0x0000558328e72788 <+456>:	je     0x558328e727f0 <evq_flush+560>
   0x0000558328e7278a <+458>:	test   $0x80,%sil
   0x0000558328e7278e <+462>:	jne    0x558328e728e1 <evq_flush+801>
   0x0000558328e72794 <+468>:	lea    -0x40(%rdi),%ecx
   0x0000558328e72797 <+471>:	cmp    $0x1f,%ecx
   0x0000558328e7279a <+474>:	ja     0x558328e727df <evq_flush+543>
   0x0000558328e7279c <+476>:	sub    $0x41,%edi
   0x0000558328e7279f <+479>:	and    $0x1f,%esi
   0x0000558328e727a2 <+482>:	cmp    $0x19,%edi
   0x0000558328e727a5 <+485>:	ja     0x558328e727ee <evq_flush+558>
   0x0000558328e727a7 <+487>:	or     %eax,%esi
   0x0000558328e727a9 <+489>:	mov    %esi,%eax
   0x0000558328e727ab <+491>:	or     $0x2000000,%eax
   0x0000558328e727b0 <+496>:	cmp    %r15d,%eax
   0x0000558328e727b3 <+499>:	je     0x558328e728f1 <evq_flush+817>
   0x0000558328e727b9 <+505>:	lea    0x5e3a20(%rip),%rdx        # 0x5583294561e0 <stop_character>
   0x0000558328e727c0 <+512>:	cmp    %eax,(%rdx)
   0x0000558328e727c2 <+514>:	jne    0x558328e72600 <evq_flush+64>
   0x0000558328e727c8 <+520>:	mov    $0x14,%esi
   0x0000558328e727cd <+525>:	xor    %edi,%edi
   0x0000558328e727cf <+527>:	call   0x558328bc88a0 <kill <at> plt>
   0x0000558328e727d4 <+532>:	mov    0x5e91ae(%rip),%edx        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e727da <+538>:	jmp    0x558328e726c4 <evq_flush+260>
   0x0000558328e727df <+543>:	lea    -0x61(%rdi),%ecx
   0x0000558328e727e2 <+546>:	cmp    $0x19,%ecx
   0x0000558328e727e5 <+549>:	ja     0x558328e728d8 <evq_flush+792>
   0x0000558328e727eb <+555>:	and    $0x1f,%esi
   0x0000558328e727ee <+558>:	mov    %esi,%edi
   0x0000558328e727f0 <+560>:	or     %edi,%eax
   0x0000558328e727f2 <+562>:	cmp    %r15d,%eax
   0x0000558328e727f5 <+565>:	je     0x558328e728f1 <evq_flush+817>
   0x0000558328e727fb <+571>:	test   %eax,%eax
   0x0000558328e727fd <+573>:	je     0x558328e72600 <evq_flush+64>
   0x0000558328e72803 <+579>:	lea    0x5e39d6(%rip),%rdx        # 0x5583294561e0 <stop_character>
   0x0000558328e7280a <+586>:	cmp    %eax,(%rdx)
   0x0000558328e7280c <+588>:	jne    0x558328e72600 <evq_flush+64>
   0x0000558328e72812 <+594>:	jmp    0x558328e727c8 <evq_flush+520>
   0x0000558328e72814 <+596>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e7281f <+607>:	nop
   0x0000558328e72820 <+608>:	cmpb   $0x0,0x5e3901(%rip)        # 0x558329456128 <kbd_is_on_hold.lto_priv.0>
   0x0000558328e72827 <+615>:	jne    0x558328e72679 <evq_flush+185>
   0x0000558328e7282d <+621>:	cmpb   $0x0,0x55ba21(%rip)        # 0x5583293ce255 <noninteractive>
   0x0000558328e72834 <+628>:	movb   $0x1,0x5e38ed(%rip)        # 0x558329456128 <kbd_is_on_hold.lto_priv.0>
   0x0000558328e7283b <+635>:	jne    0x558328e72877 <evq_flush+695>
   0x0000558328e7283d <+637>:	lea    0x30(%rsp),%rbp
   0x0000558328e72842 <+642>:	mov    %rbp,%rdi
   0x0000558328e72845 <+645>:	call   0x558328bc82b0 <sigemptyset <at> plt>
   0x0000558328e7284a <+650>:	mov    $0x1c,%esi
   0x0000558328e7284f <+655>:	mov    %rbp,%rdi
   0x0000558328e72852 <+658>:	call   0x558328bc8d40 <sigaddset <at> plt>
   0x0000558328e72857 <+663>:	mov    $0x1d,%esi
   0x0000558328e7285c <+668>:	mov    %rbp,%rdi
   0x0000558328e7285f <+671>:	call   0x558328bc8d40 <sigaddset <at> plt>
   0x0000558328e72864 <+676>:	xor    %edx,%edx
   0x0000558328e72866 <+678>:	mov    %rbp,%rsi
   0x0000558328e72869 <+681>:	xor    %edi,%edi
   0x0000558328e7286b <+683>:	call   0x558328bc58f0 <pthread_sigmask <at> plt>
   0x0000558328e72870 <+688>:	movb   $0x1,0x55b8e1(%rip)        # 0x5583293ce158 <interrupts_deferred>
   0x0000558328e72877 <+695>:	cmpb   $0x0,0x55b8d2(%rip)        # 0x5583293ce150 <interrupt_input>
   0x0000558328e7287e <+702>:	jne    0x558328e72679 <evq_flush+185>
   0x0000558328e72884 <+708>:	incl   0x56ef22(%rip)        # 0x5583293e17ac <poll_suppress_count>
   0x0000558328e7288a <+714>:	jmp    0x558328e72679 <evq_flush+185>
   0x0000558328e7288f <+719>:	xor    %r14d,%r14d
   0x0000558328e72892 <+722>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e7289d <+733>:	nopl   (%rax)
   0x0000558328e728a0 <+736>:	mov    0xb8(%rsp),%rdx
   0x0000558328e728a8 <+744>:	sub    %fs:0x28,%rdx
   0x0000558328e728b1 <+753>:	jne    0x558328e72a78 <evq_flush+1208>
   0x0000558328e728b7 <+759>:	add    $0xc8,%rsp
   0x0000558328e728be <+766>:	mov    %r14d,%eax
   0x0000558328e728c1 <+769>:	pop    %rbx
   0x0000558328e728c2 <+770>:	pop    %rbp
   0x0000558328e728c3 <+771>:	pop    %r12
   0x0000558328e728c5 <+773>:	pop    %r13
   0x0000558328e728c7 <+775>:	pop    %r14
   0x0000558328e728c9 <+777>:	pop    %r15
   0x0000558328e728cb <+779>:	ret
   0x0000558328e728cc <+780>:	nopl   0x0(%rax)
   0x0000558328e728d0 <+784>:	xor    %r15d,%r15d
   0x0000558328e728d3 <+787>:	jmp    0x558328e72738 <evq_flush+376>
   0x0000558328e728d8 <+792>:	and    $0x60,%esi
   0x0000558328e728db <+795>:	je     0x558328e727f0 <evq_flush+560>
   0x0000558328e728e1 <+801>:	or     %edi,%eax
   0x0000558328e728e3 <+803>:	or     $0x4000000,%eax
   0x0000558328e728e8 <+808>:	cmp    %r15d,%eax
   0x0000558328e728eb <+811>:	jne    0x558328e727b9 <evq_flush+505>
   0x0000558328e728f1 <+817>:	mov    0x10(%rsp),%rsi
   0x0000558328e728f6 <+822>:	cmpb   $0x0,0x56e8b3(%rip)        # 0x5583293e11b0 <single_kboard.lto_priv.0>
   0x0000558328e728fd <+829>:	mov    0x1cb(%rsi),%rax
   0x0000558328e72904 <+836>:	mov    0x48(%rax),%r13
   0x0000558328e72908 <+840>:	je     0x558328e72913 <evq_flush+851>
   0x0000558328e7290a <+842>:	cmp    0x56e8cf(%rip),%r13        # 0x5583293e11e0 <current_kboard>
   0x0000558328e72911 <+849>:	jne    0x558328e72977 <evq_flush+951>
   0x0000558328e72913 <+851>:	test   %rbx,%rbx
   0x0000558328e72916 <+854>:	je     0x558328e7294c <evq_flush+908>
   0x0000558328e72918 <+856>:	vmovdqa 0x20(%rsp),%xmm6
   0x0000558328e7291e <+862>:	vmovdqa 0x10(%rsp),%xmm7
   0x0000558328e72924 <+868>:	movw   $0x1,(%rbx)
   0x0000558328e72929 <+873>:	mov    %r12,0x20(%rbx)
   0x0000558328e7292d <+877>:	mov    %rbp,0x38(%rbx)
   0x0000558328e72931 <+881>:	vmovq  %xmm1,0x4(%rbx)
   0x0000558328e72936 <+886>:	vpextrw $0x1,%xmm0,0x2(%rbx)
   0x0000558328e7293d <+893>:	vmovdqu %xmm6,0x10(%rbx)
   0x0000558328e72942 <+898>:	vmovdqu %xmm7,0x28(%rbx)
   0x0000558328e72947 <+903>:	jmp    0x558328e726c4 <evq_flush+260>
   0x0000558328e7294c <+908>:	mov    0x2b(%rsi),%rax
   0x0000558328e72950 <+912>:	test   %rax,%rax
   0x0000558328e72953 <+915>:	cmove  %rsi,%rax
   0x0000558328e72957 <+919>:	xor    %edi,%edi
   0x0000558328e72959 <+921>:	mov    %rax,0x56e888(%rip)        # 0x5583293e11e8 <internal_last_event_frame>
   0x0000558328e72960 <+928>:	mov    %rax,0x55bf19(%rip)        # 0x5583293ce880 <globals+1536>
   0x0000558328e72967 <+935>:	call   0x558328cfb630 <handle_interrupt>
   0x0000558328e7296c <+940>:	mov    0x5e9016(%rip),%edx        # 0x55832945b988 <event_q.lto_priv.0+8>
   0x0000558328e72972 <+946>:	jmp    0x558328e726c4 <evq_flush+260>
   0x0000558328e72977 <+951>:	mov    $0xf210,%edi
   0x0000558328e7297c <+956>:	call   0x558328d5f240 <list2>
   0x0000558328e72981 <+961>:	lea    0x2(,%r15,4),%rsi
   0x0000558328e72989 <+969>:	mov    %rax,%rdi
   0x0000558328e7298c <+972>:	call   0x558328d5f240 <list2>
   0x0000558328e72991 <+977>:	mov    0x5d2e68(%rip),%rsi        # 0x558329445800 <kbd_store_ptr>
   0x0000558328e72998 <+984>:	lea    0x5d2e21(%rip),%rdi        # 0x5583294457c0 <kbd_buffer+262080>
   0x0000558328e7299f <+991>:	movb   $0x1,0xb8(%r13)
   0x0000558328e729a7 <+999>:	mov    %rax,0x40(%r13)
   0x0000558328e729ab <+1003>:	mov    0x5d2e56(%rip),%rax        # 0x558329445808 <kbd_fetch_ptr>
   0x0000558328e729b2 <+1010>:	movabs $0x400000003f000000,%r8
   0x0000558328e729bc <+1020>:	movabs $0x400000000b000000,%r10
   0x0000558328e729c6 <+1030>:	movabs $0x400000000a000000,%r9
   0x0000558328e729d0 <+1040>:	vpxor  %xmm0,%xmm0,%xmm0
   0x0000558328e729d4 <+1044>:	lea    -0x3ffc0(%rdi),%r11
   0x0000558328e729db <+1051>:	cmp    %rsi,%rax
   0x0000558328e729de <+1054>:	je     0x558328e726be <evq_flush+254>
   0x0000558328e729e4 <+1060>:	data16 cs nopw 0x0(%rax,%rax,1)
   0x0000558328e729ef <+1071>:	nop
   0x0000558328e729f0 <+1072>:	movzwl (%rax),%ecx
   0x0000558328e729f3 <+1075>:	lea    -0xa(%rcx),%edx
   0x0000558328e729f6 <+1078>:	cmp    $0x1,%dx
   0x0000558328e729fa <+1082>:	jbe    0x558328e72a19 <evq_flush+1113>
   0x0000558328e729fc <+1084>:	mov    0x28(%rax),%rdx
   0x0000558328e72a00 <+1088>:	lea    -0x5(%rdx),%ecx
   0x0000558328e72a03 <+1091>:	and    $0x7,%ecx
   0x0000558328e72a06 <+1094>:	jne    0x558328e72a19 <evq_flush+1113>
   0x0000558328e72a08 <+1096>:	mov    -0x5(%rdx),%rcx
   0x0000558328e72a0c <+1100>:	and    %r8,%rcx
   0x0000558328e72a0f <+1103>:	cmp    %r10,%rcx
   0x0000558328e72a12 <+1106>:	je     0x558328e72a63 <evq_flush+1187>
   0x0000558328e72a14 <+1108>:	cmp    %r9,%rcx
   0x0000558328e72a17 <+1111>:	je     0x558328e72a3e <evq_flush+1150>
   0x0000558328e72a19 <+1113>:	cmp    %rdi,%rax
   0x0000558328e72a1c <+1116>:	je     0x558328e72a2c <evq_flush+1132>
   0x0000558328e72a1e <+1118>:	add    $0x40,%rax
   0x0000558328e72a22 <+1122>:	cmp    %rsi,%rax
   0x0000558328e72a25 <+1125>:	jne    0x558328e729f0 <evq_flush+1072>
   0x0000558328e72a27 <+1127>:	jmp    0x558328e726be <evq_flush+254>
   0x0000558328e72a2c <+1132>:	cmp    %r11,%rsi
   0x0000558328e72a2f <+1135>:	je     0x558328e726be <evq_flush+254>
   0x0000558328e72a35 <+1141>:	lea    0x592dc4(%rip),%rax        # 0x558329405800 <kbd_buffer>
   0x0000558328e72a3c <+1148>:	jmp    0x558328e729f0 <evq_flush+1072>
   0x0000558328e72a3e <+1150>:	mov    0x1cb(%rdx),%rdx
   0x0000558328e72a45 <+1157>:	test   %rdx,%rdx
   0x0000558328e72a48 <+1160>:	je     0x558328e72a19 <evq_flush+1113>
   0x0000558328e72a4a <+1162>:	cmp    0x48(%rdx),%r13
   0x0000558328e72a4e <+1166>:	jne    0x558328e72a19 <evq_flush+1113>
   0x0000558328e72a50 <+1168>:	movw   $0x0,(%rax)
   0x0000558328e72a55 <+1173>:	vmovdqu %xmm0,0x28(%rax)
   0x0000558328e72a5a <+1178>:	mov    0x5d2d9f(%rip),%rsi        # 0x558329445800 <kbd_store_ptr>
   0x0000558328e72a61 <+1185>:	jmp    0x558328e72a19 <evq_flush+1113>
   0x0000558328e72a63 <+1187>:	mov    0x3(%rdx),%rdx
   0x0000558328e72a67 <+1191>:	lea    -0x5(%rdx),%ecx
   0x0000558328e72a6a <+1194>:	and    $0x7,%ecx
   0x0000558328e72a6d <+1197>:	jne    0x558328e72a19 <evq_flush+1113>
   0x0000558328e72a6f <+1199>:	mov    -0x5(%rdx),%rcx
   0x0000558328e72a73 <+1203>:	and    %r8,%rcx
   0x0000558328e72a76 <+1206>:	jmp    0x558328e72a14 <evq_flush+1108>
   0x0000558328e72a78 <+1208>:	call   0x558328bc6230 <__stack_chk_fail <at> plt>
   0x0000558328e72a7d <+1213>:	jmp    0x558328bd7dce <evq_flush.cold>
Address range 0x558328bd7dce to 0x558328bd7dd3:
   0x0000558328bd7dce <-2729970>:	call   0x558328bceaed <emacs_abort>
End of assembler dump.
(gdb)





This bug report was last modified 335 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.