<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>164983</bug_id>
          
          <creation_ts>2016-11-18 23:39:51 -0800</creation_ts>
          <short_desc>[GTK] Slow copy and paste between workspaces</short_desc>
          <delta_ts>2016-11-29 06:37:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1396009</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=164984</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=164985</see_also>
    
    <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1394993</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=769835</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend De Schouwer">berend.de.schouwer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>carlosg</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tpopela</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253044</commentid>
    <comment_count>0</comment_count>
    <who name="Berend De Schouwer">berend.de.schouwer</who>
    <bug_when>2016-11-18 23:39:51 -0800</bug_when>
    <thetext>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 &quot;paste&quot; 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 -&gt; copy.
4. Go to workspace 2, context-menu -&gt; 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253493</commentid>
    <comment_count>1</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2016-11-23 08:24:31 -0800</bug_when>
    <thetext>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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253881</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2016-11-28 10:38:04 -0800</bug_when>
    <thetext>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 &quot;welcome to web&quot; internal page is enough):

[2241450,854] wl_callback@41.done(31935208)
[2241459,721]  -&gt; zxdg_toplevel_v6@34.set_min_size(405, 47)
[2241459,761]  -&gt; zxdg_toplevel_v6@34.set_max_size(0, 0)
[2241459,773]  -&gt; zxdg_surface_v6@33.set_window_geometry(0, 0, 1080, 692)
[2241459,786]  -&gt; wl_compositor@4.create_region(new id wl_region@41)
[2241459,792]  -&gt; wl_region@41.add(0, 0, 1080, 692)
[2241459,801]  -&gt; wl_surface@31.set_opaque_region(wl_region@41)
[2241459,806]  -&gt; wl_region@41.destroy()
[2241459,810]  -&gt; wl_compositor@4.create_region(new id wl_region@39)
[2241459,815]  -&gt; wl_region@39.add(-10, -10, 1100, 712)
[2241459,823]  -&gt; wl_surface@31.set_input_region(wl_region@39)
[2241459,827]  -&gt; wl_region@39.destroy()
[2241460,233]  -&gt; wl_surface@31.frame(new id wl_callback@42)
[2241460,248]  -&gt; wl_surface@31.attach(wl_buffer@37, 0, 0)
[2241460,261]  -&gt; wl_surface@31.damage(0, 0, 2147483647, 2147483647)
[2241460,469]  -&gt; wl_surface@31.commit()

Note the wl_surface@31.frame() call, it&apos;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]  -&gt; zxdg_toplevel_v6@34.set_min_size(405, 47)
[2291832,870]  -&gt; zxdg_toplevel_v6@34.set_max_size(0, 0)
...

This is a backtrace snapshot of the moment ephy doesn&apos;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=&lt;optimized out&gt;, 
    n_fds=1, fds=0x7fff60001370, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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&lt;void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) ()
   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 &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, 
    n_fds=1, fds=0x7fff5c001370, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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&lt;void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) ()
   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 &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, 
    n_fds=1, fds=0x7fff64001370, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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&lt;void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) ()
   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 &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, 
    n_fds=1, fds=0x7fff6c001370, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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&lt;void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) ()
   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 &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, 
    n_fds=1, fds=0x7fff70001370, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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&lt;void (), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) ()
   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 &lt;return&gt; to continue, or q &lt;return&gt; 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&lt;bool ()&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, std::chrono:---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
:time_point&lt;std::chrono::_V2::steady_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) () 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&lt;void (), WebKit::MemoryPressureMonitor::MemoryPressureMonitor()::{lambda()#1}&gt;::_M_invoke(std::_Any_data const&amp;) () 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&lt;std::mutex&gt;&amp;) () from /lib64/libstdc++.so.6
#2  0x00007ffff429b875 in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda&lt;bool ()&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, std::chrono::time_point&lt;std::chrono::_V2::steady_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) () from /lib64/libjavascriptcoregtk-4.0.so.18
---Type &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, n_fds=1, fds=0x7fffcc0010c0, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;) 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=&lt;optimized out&gt;, n_fds=2, fds=0x7fffc80010c0, timeout=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;)
    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=&lt;optimized out&gt;, n_fds=2, fds=0x7fffd00008e0, timeout=&lt;optimized out&gt;, 
    context=0x555555896fa0) at /home/carlos/Source/gnome/glib/glib/gmain.c:4228
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
#2  g_main_context_iterate (context=context@entry=0x555555896fa0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=&lt;optimized out&gt;) 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=&lt;optimized out&gt;) 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&lt;std::mutex&gt;&amp;) () from /lib64/libstdc++.so.6
#2  0x00007ffff42ca366 in bmalloc::AsyncTask&lt;bmalloc::Heap, void (bmalloc::Heap::*)()&gt;::threadRunLoop() ()
   from /lib64/libjavascriptcoregtk-4.0.so.18
#3  0x00007ffff42ca499 in bmalloc::AsyncTask&lt;bmalloc::Heap, void (bmalloc::Heap::*)()&gt;::threadEntryPoint(bmalloc::AsyncTask&lt;bmalloc::Heap, void (bmalloc::Heap::*)()&gt;*) () 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=&lt;optimized out&gt;, recurse_mode=&lt;optimized out&gt;)
    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 &lt;return&gt; to continue, or q &lt;return&gt; 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=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, 
    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=&lt;optimized out&gt;, 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 &lt;gdk_threads_dispatch&gt;, 
    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=&lt;optimized out&gt;) 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=&lt;optimized out&gt;, 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&apos;s worth pointing out that this just doesn&apos;t affect c&amp;p, other things like desktop notifications are not dispatched until epiphany is shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253883</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garnacho">carlosg</who>
    <bug_when>2016-11-28 10:42:32 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; In https://bugzilla.redhat.com/show_bug.cgi?id=1394993 user observes
&gt; following in the console:
&gt; 
&gt; Nov 15 11:14:59 shrek.rexursive.com evolution[10057]: Error writing
&gt; 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&amp;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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254256</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-29 06:37:58 -0800</bug_when>
    <thetext>Carlos Garnacho discovered that this is https://bugzilla.gnome.org/show_bug.cgi?id=769835 -- thanks! -- so there&apos;s probably not anything to be changed in WebKit.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>