RESOLVED WONTFIX Bug 164983
[GTK] Slow copy and paste between workspaces
https://bugs.webkit.org/show_bug.cgi?id=164983
Summary [GTK] Slow copy and paste between workspaces
Berend De Schouwer
Reported 2016-11-18 23:39:51 PST
Copy and paste between applications where either the source or the destination application has a WebkitGTK+ widget can be slow. Environment: Gnome Shell on Wayland Version: 2.14.1-2.fc25 (Fedora 25) Copy and Paste will fail when the applications are on separate workspaces. When the applications are on the same workspace copy and paste works fine. Copying *from* a WebkitGTK+ application to a any other application requires the source application to be visible after "paste" is actioned. This requires swapping backwards and forwards between workspaces. 1. Start a WebkitGTK+ application (epiphany) on workspace 1. 2. Start a different application (gedit) on workspace 2. 3. Go to workspace 1, and select text, context-menu -> copy. 4. Go to workspace 2, context-menu -> paste ... nothing happens. 5. Go back to workspace 1 (do nothing) ... text has been pasted 6. Go to workspace 2, confirm pasted text. Various applications were tested. The two WebkitGTK+ applications that were tested were Epiphany and Evolution. Other applications tested include gedit, gnome-calculator, gnome-terminal, firefox, chrome, konsole, gnome-music, gnome-builder, nautilus, gnome-font-viewer, gnome-shell. Epiphany fails both on the WebkitGTK+ widget, and on a normal GTK+ widget. It fails on both web content, and the URL bar. Downstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=1396009
Attachments
Tomas Popela
Comment 1 2016-11-23 08:24:31 PST
In https://bugzilla.redhat.com/show_bug.cgi?id=1394993 user observes following in the console: Nov 15 11:14:59 shrek.rexursive.com evolution[10057]: Error writing selection data: Error writing to file descriptor: Broken pipe
Carlos Garnacho
Comment 2 2016-11-28 10:38:04 PST
Running epiphany -p with WAYLAND_DEBUG=1, I see this when switching out of its workspace (no need to copy anything to the clipboard, nor opening a page for that matter, just the default "welcome to web" internal page is enough): [2241450,854] wl_callback@41.done(31935208) [2241459,721] -> zxdg_toplevel_v6@34.set_min_size(405, 47) [2241459,761] -> zxdg_toplevel_v6@34.set_max_size(0, 0) [2241459,773] -> zxdg_surface_v6@33.set_window_geometry(0, 0, 1080, 692) [2241459,786] -> wl_compositor@4.create_region(new id wl_region@41) [2241459,792] -> wl_region@41.add(0, 0, 1080, 692) [2241459,801] -> wl_surface@31.set_opaque_region(wl_region@41) [2241459,806] -> wl_region@41.destroy() [2241459,810] -> wl_compositor@4.create_region(new id wl_region@39) [2241459,815] -> wl_region@39.add(-10, -10, 1100, 712) [2241459,823] -> wl_surface@31.set_input_region(wl_region@39) [2241459,827] -> wl_region@39.destroy() [2241460,233] -> wl_surface@31.frame(new id wl_callback@42) [2241460,248] -> wl_surface@31.attach(wl_buffer@37, 0, 0) [2241460,261] -> wl_surface@31.damage(0, 0, 2147483647, 2147483647) [2241460,469] -> wl_surface@31.commit() Note the wl_surface@31.frame() call, it's creating a callback that is not being processed. When switching back to the workspace again, the callback is dispatched: [2291824,130] wl_display@1.delete_id(41) [2291824,182] wl_display@1.delete_id(39) [2291824,189] wl_display@1.delete_id(42) [2291824,194] wl_buffer@43.release() [2291824,201] wl_callback@42.done(31985582) [2291832,835] -> zxdg_toplevel_v6@34.set_min_size(405, 47) [2291832,870] -> zxdg_toplevel_v6@34.set_max_size(0, 0) ... This is a backtrace snapshot of the moment ephy doesn't paste the contents across workspaces: (gdb) t a a bt Thread 15 (Thread 0x7fff757fa700 (LWP 5204)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fff60001370, timeout=<optimized out>, context=0x7fff60000900) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x7fff60000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x7fff60001240) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff42c4b70 in WTF::RunLoop::run() () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c37e2 in std::_Function_handler<void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #8 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #9 0x00007fffef213f6f in clone () from /lib64/libc.so.6 ---Type <return> to continue, or q <return> to quit--- Thread 14 (Thread 0x7fff75ffb700 (LWP 5203)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fff5c001370, timeout=<optimized out>, context=0x7fff5c000900) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x7fff5c000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x7fff5c001240) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff42c4b70 in WTF::RunLoop::run() () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c37e2 in std::_Function_handler<void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #8 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #9 0x00007fffef213f6f in clone () from /lib64/libc.so.6 ---Type <return> to continue, or q <return> to quit--- Thread 11 (Thread 0x7fff777fe700 (LWP 5198)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fff64001370, timeout=<optimized out>, context=0x7fff64000900) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x7fff64000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x7fff64001240) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff42c4b70 in WTF::RunLoop::run() () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c37e2 in std::_Function_handler<void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #8 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #9 0x00007fffef213f6f in clone () from /lib64/libc.so.6 ---Type <return> to continue, or q <return> to quit--- Thread 10 (Thread 0x7fff77fff700 (LWP 5197)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fff6c001370, timeout=<optimized out>, context=0x7fff6c000900) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x7fff6c000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x7fff6c001240) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff42c4b70 in WTF::RunLoop::run() () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c37e2 in std::_Function_handler<void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #8 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #9 0x00007fffef213f6f in clone () from /lib64/libc.so.6 ---Type <return> to continue, or q <return> to quit--- Thread 9 (Thread 0x7fff8496a700 (LWP 5196)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fff70001370, timeout=<optimized out>, context=0x7fff70000900) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x7fff70000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x7fff70001240) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff42c4b70 in WTF::RunLoop::run() () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c37e2 in std::_Function_handler<void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #8 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #9 0x00007fffef213f6f in clone () from /lib64/libc.so.6 ---Type <return> to continue, or q <return> to quit--- Thread 8 (Thread 0x7fff857f2700 (LWP 5192)): #0 0x00007fffef20dbe9 in syscall () from /lib64/libc.so.6 #1 0x00007ffff000c32f in g_cond_wait (cond=cond@entry=0x555555fa1b08, mutex=mutex@entry=0x555555fa1b00) at /home/carlos/Source/gnome/glib/glib/gthread-posix.c:1395 #2 0x00007fffeff9dc1b in g_async_queue_pop_intern_unlocked ( queue=queue@entry=0x555555fa1b00, wait=wait@entry=1, end_time=end_time@entry=-1) at /home/carlos/Source/gnome/glib/glib/gasyncqueue.c:419 #3 0x00007fffeff9e057 in g_async_queue_pop (queue=0x555555fa1b00) at /home/carlos/Source/gnome/glib/glib/gasyncqueue.c:453 #4 0x00005555555d04a0 in run_history_service_thread () #5 0x00007fffeffeeed3 in g_thread_proxy (data=0x555555e1bed0) at /home/carlos/Source/gnome/glib/glib/gthread.c:784 #6 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #7 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 7 (Thread 0x7fff85ff3700 (LWP 5191)): #0 0x00007fffef4df809 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff429b763 in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, std::chrono:---Type <return> to continue, or q <return> to quit--- :time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >) () from /lib64/libjavascriptcoregtk-4.0.so.18 #2 0x00007ffff428e902 in WTF::sleep(double) () from /lib64/libjavascriptcoregtk-4.0.so.18 #3 0x00007ffff4c5e0ed in std::_Function_handler<void (), WebKit::MemoryPressureMonitor::MemoryPressureMonitor()::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib64/libwebkit2gtk-4.0.so.37 #4 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #5 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #7 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 6 (Thread 0x7fffd48fd700 (LWP 5188)): #0 0x00007fffef4df460 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007fffe82b72ec in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /lib64/libstdc++.so.6 #2 0x00007ffff429b875 in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >) () from /lib64/libjavascriptcoregtk-4.0.so.18 ---Type <return> to continue, or q <return> to quit--- #3 0x00007ffff5432af7 in WebCore::IconDatabase::syncThreadMainLoop() () from /lib64/libwebkit2gtk-4.0.so.37 #4 0x00007ffff5433f21 in WebCore::IconDatabase::iconDatabaseSyncThread() () from /lib64/libwebkit2gtk-4.0.so.37 #5 0x00007ffff429e3d5 in WTF::threadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #6 0x00007ffff42c230a in WTF::wtfThreadEntryPoint(void*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #7 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #8 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 5 (Thread 0x7fffd73ca700 (LWP 5187)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7fffcc0010c0, timeout=<optimized out>, context=0x55555587c800) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=context@entry=0x55555587c800, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc84dc in g_main_context_iteration (context=0x55555587c800, may_block=1) at /home/carlos/Source/gnome/glib/glib/gmain.c:3990 #4 0x00007fffd85f112e in dconf_gdbus_worker_thread (user_data=0x55555587c800) at /home/carlos/Source/gnome/dconf/gdbus/dconf-gdbus-thread.c:82 #5 0x00007fffeffeeed3 in g_thread_proxy (data=0x555555878540) at /home/carlos/Source/gnome/glib/glib/gthread.c:784 #6 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #7 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 4 (Thread 0x7fffd7bcb700 (LWP 5186)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7fffc80010c0, timeout=<optimized out>, context=0x555555897760) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 #2 g_main_context_iterate (context=0x555555897760, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc8752 in g_main_loop_run (loop=0x55555585da60) at /home/carlos/Source/gnome/glib/glib/gmain.c:4125 #4 0x00007ffff05a9e06 in gdbus_shared_thread_func (user_data=0x555555897730) at /home/carlos/Source/gnome/glib/gio/gdbusprivate.c:247 #5 0x00007fffeffeeed3 in g_thread_proxy (data=0x555555878140) at /home/carlos/Source/gnome/glib/glib/gthread.c:784 #6 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #7 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7fffd83cc700 (LWP 5185)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffeffc83d6 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7fffd00008e0, timeout=<optimized out>, context=0x555555896fa0) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228 ---Type <return> to continue, or q <return> to quit--- #2 g_main_context_iterate (context=context@entry=0x555555896fa0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3924 #3 0x00007fffeffc84dc in g_main_context_iteration (context=0x555555896fa0, may_block=may_block@entry=1) at /home/carlos/Source/gnome/glib/glib/gmain.c:3990 #4 0x00007fffeffc8521 in glib_worker_main (data=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:5783 #5 0x00007fffeffeeed3 in g_thread_proxy (data=0x5555558780f0) at /home/carlos/Source/gnome/glib/glib/gthread.c:784 #6 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #7 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7fffe0526700 (LWP 5184)): #0 0x00007fffef4df460 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007fffe82b72ec in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /lib64/libstdc++.so.6 #2 0x00007ffff42ca366 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() () from /lib64/libjavascriptcoregtk-4.0.so.18 #3 0x00007ffff42ca499 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) () from /lib64/libjavascriptcoregtk-4.0.so.18 #4 0x00007fffe82bd35f in ?? () from /lib64/libstdc++.so.6 #5 0x00007fffef4d96ca in start_thread () from /lib64/libpthread.so.0 #6 0x00007fffef213f6f in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7ffff7ee6ac0 (LWP 5180)): #0 0x00007fffef20800d in poll () from /lib64/libc.so.6 #1 0x00007fffe858f8e9 in wl_display_poll (display=display@entry=0x555555868a70, events=events@entry=1) at /home/carlos/Source/gnome/wayland/src/wayland-client.c:1593 #2 0x00007fffe8590dac in wl_display_dispatch_queue (display=0x555555868a70, queue=0x5555558c56c0) at /home/carlos/Source/gnome/wayland/src/wayland-client.c:1666 #3 0x00007fffec1183ab in get_back_bo () from /lib64/libEGL.so.1 #4 0x00007fffec118fac in dri2_wl_query_buffer_age () from /lib64/libEGL.so.1 #5 0x00007fffec111a16 in _eglQuerySurface () from /lib64/libEGL.so.1 #6 0x00007fffec10a309 in eglQuerySurface () from /lib64/libEGL.so.1 #7 0x00007ffff1ba3e03 in gdk_wayland_window_invalidate_for_new_frame (window=0x555555874330, update_area=0x555556568f40) at /home/carlos/Source/gnome/gtk+-3/gdk/wayland/gdkglcontext-wayland.c:65 #8 0x00007ffff1b60a5a in gdk_window_process_updates_internal (window=0x555555874330) at /home/carlos/Source/gnome/gtk+-3/gdk/gdkwindow.c:3962 #9 0x00007ffff1b60c94 in gdk_window_process_updates_with_mode (window=<optimized out>, recurse_mode=<optimized out>) at /home/carlos/Source/gnome/gtk+-3/gdk/gdkwindow.c:4179 #10 0x00007ffff02a0515 in g_closure_invoke (closure=0x555556581a20, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffffd400, invocation_hint=invocation_hint@entry=0x7fffffffd3a0) ---Type <return> to continue, or q <return> to quit--- at /home/carlos/Source/gnome/glib/gobject/gclosure.c:804 #11 0x00007ffff02b1d92 in signal_emit_unlocked_R (node=node@entry=0x5555558c5650, detail=detail@entry=0, instance=instance@entry=0x5555558d7270, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd400) at /home/carlos/Source/gnome/glib/gobject/gsignal.c:3635 #12 0x00007ffff02ba8cb in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd598) at /home/carlos/Source/gnome/glib/gobject/gsignal.c:3391 #13 0x00007ffff02bac62 in g_signal_emit (instance=instance@entry=0x5555558d7270, signal_id=<optimized out>, detail=detail@entry=0) at /home/carlos/Source/gnome/glib/gobject/gsignal.c:3447 #14 0x00007ffff1b5843f in _gdk_frame_clock_emit_paint (frame_clock=frame_clock@entry=0x5555558d7270) at /home/carlos/Source/gnome/gtk+-3/gdk/gdkframeclock.c:640 #15 0x00007ffff1b58ad9 in gdk_frame_clock_paint_idle (data=0x5555558d7270) at /home/carlos/Source/gnome/gtk+-3/gdk/gdkframeclockidle.c:430 #16 0x00007ffff1b442a8 in gdk_threads_dispatch (data=data@entry=0x555555a03c60) at /home/carlos/Source/gnome/gtk+-3/gdk/gdk.c:743 #17 0x00007fffeffc8afd in g_timeout_dispatch (source=0x555555a7e390, callback=0x7ffff1b44280 <gdk_threads_dispatch>, user_data=0x555555a03c60) at /home/carlos/Source/gnome/glib/glib/gmain.c:4674 #18 0x00007fffeffc80f2 in g_main_dispatch (context=0x555555868050) at /home/carlos/Source/gnome/glib/glib/gmain.c:3203 #19 g_main_context_dispatch (context=context@entry=0x555555868050) at /home/carlos/Source/gnome/glib/glib/gmain.c:3856 #20 0x00007fffeffc8438 in g_main_context_iterate (context=context@entry=0x555555868050, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /home/carlos/Source/gnome/glib/glib/gmain.c:3929 #21 0x00007fffeffc84dc in g_main_context_iteration (context=context@entry=0x555555868050, may_block=may_block@entry=1) at /home/carlos/Source/gnome/glib/glib/gmain.c:3990 #22 0x00007ffff057f71d in g_application_run (application=0x5555558ed290, argc=<optimized out>, argv=0x7fffffffd998) at /home/carlos/Source/gnome/glib/gio/gapplication.c:2381 #23 0x00005555555867a4 in main () I can see thread 1 stuck on poll() inside wl_display_dispatch_queue(), which according to the documentation has several threading pitfalls, at the moment I can only speculate that something like that is related here. I am also uncertain of where does the wl_surface_frame() call come from, but I think it is triggered from mesa code, if SwapInterval is non-zero. Also, it's worth pointing out that this just doesn't affect c&p, other things like desktop notifications are not dispatched until epiphany is shown.
Carlos Garnacho
Comment 3 2016-11-28 10:42:32 PST
(In reply to comment #1) > In https://bugzilla.redhat.com/show_bug.cgi?id=1394993 user observes > following in the console: > > Nov 15 11:14:59 shrek.rexursive.com evolution[10057]: Error writing > selection data: Error writing to file descriptor: Broken pipe This is more or less expected in this situation. If the clipboard source is blocked, the c&p operation destination side will eventually give up (gdk sets a 30s timeout IIRC) and close the pipe, that will be seen as a broken pipe on the webkit app side when it eventually regains control and tries to write the clipboard content.
Michael Catanzaro
Comment 4 2016-11-29 06:37:58 PST
Carlos Garnacho discovered that this is https://bugzilla.gnome.org/show_bug.cgi?id=769835 -- thanks! -- so there's probably not anything to be changed in WebKit.
Note You need to log in before you can comment on or make changes to this bug.