Subject: bug#62291: 30.0.50; PGTK copy + paste to other app problem

From: Andrew Tropin <[email-masked]>
Date: Tue, 21 Mar 2023 20:13:35 +0400

On 2023-03-21 18:30, Po Lu wrote:

> Andrew Tropin <[email-masked]> writes:
>
>> #0  0x00007ffff71a9424 in signal_emit_unlocked_R.isra.0 () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #1  0x00007ffff71af21b in g_signal_emit_valist () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #2  0x00007ffff71af722 in g_signal_emit () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #3  0x00007ffff719b884 in g_object_dispatch_properties_changed () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #4  0x00007ffff719d834 in g_object_notify_by_pspec () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #5  0x00007ffff79afbcd in ?? () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgtk-3.so.0
>> #6  0x00007ffff79de357 in ?? () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgtk-3.so.0
>> #7  0x00007ffff71974af in g_closure_invoke () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #8  0x00007ffff71a89e9 in signal_emit_unlocked_R.isra.0 () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #9  0x00007ffff71aed65 in g_signal_emit_valist () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #10 0x00007ffff71af722 in g_signal_emit () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libgobject-2.0.so.0
>> #11 0x00007ffff798ac04 in ?? () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgtk-3.so.0
>> #12 0x00007ffff784b37a in gtk_main_do_event () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgtk-3.so.0
>> #13 0x00007ffff7ef23c5 in ?? () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgdk-3.so.0
>> #14 0x00007ffff7f4f352 in ?? () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgdk-3.so.0
>> #15 0x00007ffff70a34cb in g_main_context_dispatch () from /gnu/store/ginkhx2irsi4qwkpnnwg4r30h7jwhi62-glib-2.70.2/lib/libglib-2.0.so.0
>> #16 0x000000000064c548 in pgtk_read_socket (terminal=<optimized out>, hold_quit=0x7fffffffba00) at pgtkterm.c:3840
>> #17 pgtk_read_socket (terminal=<optimized out>, hold_quit=0x7fffffffba00) at pgtkterm.c:3819
>> #18 0x0000000000515762 in gobble_input () at keyboard.c:7416
>> #19 0x0000000000515b85 in handle_async_input () at keyboard.c:7647
>> #20 process_pending_signals () at keyboard.c:7661
>> #21 unblock_input_to (level=0) at keyboard.c:7676
>> #22 unblock_input_to (level=<optimized out>) at keyboard.c:7670
>> #23 0x0000000000516a38 in unblock_input () at keyboard.c:7695
>> #24 timer_check () at keyboard.c:4741
>> #25 0x0000000000516f75 in readable_events (flags=flags@entry=1) at keyboard.c:3523
>> #26 0x0000000000517138 in get_input_pending (flags=flags@entry=1) at keyboard.c:7366
>> #27 0x000000000051beb8 in detect_input_pending_run_timers (do_display=do_display@entry=true) at keyboard.c:10896
>> #28 0x00000000005f40c8 in wait_reading_process_output (time_limit=time_limit@entry=30, nsecs=nsecs@entry=0, read_kbd=read_kbd@entry=-1, do_display=do_display@entry=true, 
>>     wait_for_cell=wait_for_cell@entry=0x0, wait_proc=wait_proc@entry=0x0, just_wait_proc=<optimized out>) at process.c:5779
>> #29 0x0000000000437bd0 in sit_for (timeout=timeout@entry=0x7a, reading=reading@entry=true, display_option=display_option@entry=1) at dispnew.c:6256
>> #30 0x000000000051ea0f in read_char (commandflag=1, map=0xdecb23, prev_event=0x0, used_mouse_menu=0x7fffffffc55b, end_time=0x0) at lisp.h:759
>> #31 0x000000000051f2ed in read_key_sequence (keybuf=<optimized out>, prompt=0x0, dont_downcase_last=<optimized out>, can_return_switch_frame=true, fix_current_buffer=true, 
>>     prevent_redisplay=<optimized out>) at keyboard.c:10073
>> #32 0x0000000000520f12 in command_loop_1 () at lisp.h:1164
>> --Type <RET> for more, q to quit, c to continue without paging--
>> #33 0x0000000000596757 in internal_condition_case (bfun=bfun@entry=0x520d40 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x514390 <cmd_error>) at eval.c:1474
>> #34 0x000000000050d13a in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1124
>> #35 0x00000000005966b1 in internal_catch (tag=tag@entry=0xfea0, func=func@entry=0x50d120 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1197
>> #36 0x000000000050d0df in command_loop () at lisp.h:1164
>> #37 0x0000000000513f43 in recursive_edit_1 () at keyboard.c:711
>> #38 0x00000000005142ba in Frecursive_edit () at keyboard.c:794
>> #39 0x000000000042d022 in main (argc=<optimized out>, argv=<optimized out>) at emacs.c:2529
>> (gdb) frame 12
>> #12 0x00007ffff784b37a in gtk_main_do_event () from /gnu/store/1y2rd23xx129v1y0qglijws0s208aj8p-gtk+-3.24.30/lib/libgtk-3.so.0
>> (gdb) p *event
>> No symbol "event" in current context.
>> (gdb) p *event<TAB>
>> event_arm_timer                                        event_head                                             event_queue_insert_if_intersect_below_current_y[part]
>> event_callback                                         event_inotify_data_drop                                event_queue_t
>> event_check                                            event_insert_if_intersect_below_current_y              event_source_type_table
>> event_dispatch                                         event_kind                                             event_to_kboard
>> event_free[part]                                       event_listeners                                        event_unmask_signal_data
>> event_free_inode_data                                  event_log_delays                                       eventfd
>> event_free_inotify_data                                event_make_inode_data                                  eventfd@got[plt]
>> event_free_signal_data                                 event_make_inotify_data                                eventfd@plt
>> event_funcs                                            event_make_signal_data                                 eventfd_read
>> event_gc_inode_data                                    event_next_pending                                     eventfd_write
>> event_gc_signal_data                                   event_prepare                                          
>> event_get_clock_data                                   event_q 
>>
>> It complains `No symbol "event" in current context.`, am I did something
>> wrong?
>
> Yes, you didn't get debug information loaded in GDB.
>
> What does:
>
>   (gdb) info sharedlibrary
>
> say?

Ok, with the help of apteryx, I was able to figure it out, there were a
problem in grafts mechanism, so A proper command is:

guix shell gdb emacs-next-pgtk --with-debug-info=emacs-next-pgtk \
--with-debug-info=gtk+ --with-debug-info=glib --no-grafts

The output is here:
--8<---------------cut here---------------start------------->8---
(gdb) frame 12
#12 0x00007ffff798ac04 in gtk_widget_event_internal (widget=widget@entry=0xfee500, event=event@entry=0xfdb4a0) at gtkwidget.c:7808
7808    in gtkwidget.c
(gdb) p *event
$3 = {type = GDK_FOCUS_CHANGE, any = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000'}, expose = {type = GDK_FOCUS_CHANGE, window = 0xefc450, 
    send_event = 0 '\000', area = {x = 0, y = 0, width = 0, height = 0}, region = 0x0, count = 0}, visibility = {type = GDK_FOCUS_CHANGE, window = 0xefc450, 
    send_event = 0 '\000', state = GDK_VISIBILITY_UNOBSCURED}, motion = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, y = 0, axes = 0x0, 
    state = 0, is_hint = 0, device = 0x0, x_root = 0, y_root = 0}, button = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, y = 0, 
    axes = 0x0, state = 0, button = 0, device = 0x0, x_root = 0, y_root = 0}, touch = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, 
    y = 0, axes = 0x0, state = 0, sequence = 0x0, emulating_pointer = 0, device = 0x0, x_root = 0, y_root = 0}, scroll = {type = GDK_FOCUS_CHANGE, window = 0xefc450, 
    send_event = 0 '\000', time = 0, x = 0, y = 0, state = 0, direction = GDK_SCROLL_UP, device = 0x0, x_root = 0, y_root = 0, delta_x = 0, delta_y = 0, is_stop = 0}, key = {
    type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, state = 0, keyval = 0, length = 0, string = 0x0, hardware_keycode = 0, group = 0 '\000', 
    is_modifier = 0}, crossing = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', subwindow = 0x0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0, 
    mode = GDK_CROSSING_NORMAL, detail = GDK_NOTIFY_ANCESTOR, focus = 0, state = 0}, focus_change = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', in = 1}, 
  configure = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', x = 0, y = 0, width = 0, height = 0}, property = {type = GDK_FOCUS_CHANGE, window = 0xefc450, 
    send_event = 0 '\000', atom = 0x0, time = 0, state = 0}, selection = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', selection = 0x0, target = 0x0, 
    property = 0x0, time = 0, requestor = 0x0}, owner_change = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', owner = 0x0, 
    reason = GDK_OWNER_CHANGE_NEW_OWNER, selection = 0x0, time = 0, selection_time = 0}, proximity = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', 
    time = 0, device = 0x0}, dnd = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', context = 0x0, time = 0, x_root = 0, y_root = 0}, window_state = {
    type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', changed_mask = 0, new_window_state = 0}, setting = {type = GDK_FOCUS_CHANGE, window = 0xefc450, 
    send_event = 0 '\000', action = GDK_SETTING_ACTION_NEW, name = 0x0}, grab_broken = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', keyboard = 0, 
    implicit = 0, grab_window = 0x0}, touchpad_swipe = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', phase = 0 '\000', n_fingers = 1 '\001', time = 0, 
    x = 0, y = 0, dx = 0, dy = 0, x_root = 0, y_root = 0, state = 0}, touchpad_pinch = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', phase = 0 '\000', 
    n_fingers = 1 '\001', time = 0, x = 0, y = 0, dx = 0, dy = 0, angle_delta = 0, scale = 0, x_root = 0, y_root = 0, state = 0}, pad_button = {type = GDK_FOCUS_CHANGE, 
    window = 0xefc450, send_event = 0 '\000', time = 0, group = 0, button = 0, mode = 0}, pad_axis = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', 
    time = 0, group = 0, index = 0, mode = 0, value = 0}, pad_group_mode = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, group = 0, mode = 0}}
--8<---------------cut here---------------end--------------->8---

Thank you for your patience :)

-- 
Best regards,
Andrew Tropin