xpra icon
Bug tracker and wiki

Opened 4 weeks ago

Last modified 8 hours ago

#2452 assigned defect

Firefox html5 clipboard sync is... confusing.

Reported by: alas Owned by: Antoine Martin
Priority: critical Milestone: 4.0
Component: html5 Version: 3.0.x
Keywords: clipboard Cc:

Description (last modified by Antoine Martin)

Prepping to test #2312, I started realizing that the clipboard sync even for text was extraordinarily crazy-making. (It does suddenly occur to me that this might be a result of enabling the chrome://flags/#enable-experimental-web-platform-features as indicated in ticket:2312#comment:6 of that ticket - I'll check once I finish this ticket.)

Using Chrome 77 on Windows 7 against a 3.0-r24048 Fedora 30 server.

It took some time to isolate the behavior, but I finally came up with a reproducible set of steps that are as not-crazy-making as possible.

I launched the session with:

xpra start :13 --no-daemon --bind-tcp=0.0.0.0:1234 --bind-ws=0.0.0.0:1237 --start-child=xterm --start-child=xterm --exit-with-children

I then used one of the xterms to launch Firefox, then used a bing translate tab for a copy/paste input/output field, and word locally (I was hoping to be pasting images... a text file ought to work).

  • Copy the text 'test1' locally, paste into bing - pastes as expected, with the following output in the server logs.
    2019-10-17 10:27:04,950 client is requesting an unknown target: 'text/plain;charset=utf-8'
    2019-10-17 10:27:04,951  valid targets: UTF8_STRING, text/plain
    2019-10-17 10:27:04,951  dropping the request
    
  • Now type 'test2' into bing field and copy, paste back to local editor - fails, instead pasing 'test1'.
  • Now type 'test3' locally and copy, paste back into bing - fails, pasting 'test2' (which was last copied in the session) instead, and again outputting the request drop message in server logs.
  • Now, without any new copying, paste back into the local editor - at this point, it will also paste 'test2' (the local clipboard has now been updated with the contents from the session clipboard, when the paste event took place?).
  • Now go back to the session and type/copy 'test4', then paste back to the local editor - and again it pastes 'test2', so the copy event server side does not seem to be updating the clipboard locally...?
  • Now, just to see if you've been made crazy yet, type/copy 'test5' locally and paste into bing - it fails and instead pastes... 'test4', which was last sync'd to the server clipboard when the type/copy event happened, if I'm not totally lost yet... ohh, and now you see that dropping request message in the server logs again.
  • And now, once again with no new copy event... just paste whatever is hiding in the local clipboard into the local editor... and, now we see 'test4', which it looks like got sync'd back to the local clipboard not on the copy event, or on the paste event locally... but only when a paste event server-side is detected?

Really, that was as "clear" as I could make it... I think.

Change History (18)

comment:1 Changed 4 weeks ago by alas

Re-checked with the experimental-web-platform-features disabled ... same behavior.

comment:2 Changed 4 weeks ago by Antoine Martin

Description: modified (diff)
Priority: majorcritical
Status: newassigned

comment:3 Changed 4 weeks ago by Antoine Martin

See also #2450, the new clipboard code comes from #812

comment:4 Changed 4 weeks ago by Antoine Martin

Resolution: invalid
Status: assignedclosed

DOH.
See ticket:2312#comment:14 / ticket:1844#comment:13.
Firefox won't work. You will need to test with something else.

comment:5 Changed 4 weeks ago by Antoine Martin

Resolution: invalid
Status: closedreopened
Summary: html5 clipboard sync is... confusing.Firefox html5 clipboard sync is... confusing.

Re-opening because we need to handle Firefox better: either request the permissions we need (not sure if this requires an "extension" as the MDN page seems to imply), or at least telling the user something more useful.

comment:6 Changed 3 weeks ago by alas

Re-testing with 3.0.1-r24252 running on a fedora 30 server, connecting with Chrome 77 on Windows 7... then launching Firefox session-side to compare with running chromium-browser session side.

Behavior is the same. Much less confusing, also.

Clipboard sync for text seems to have only one failing - content copied locally fails to sync for pasting server-side for a right-click paste event (until after a keyboard shortcut paste event has taken place).

So:

  • Copy anything locally, using right-click or keyboard shortcut.
  • Try to use right-click menu to paste server side - will fail and instead paste last contents sync'd server-side.
  • Immediately (no new copy events) use keyboard shortcut to paste - works as expected, pasting recently locally copied text.
  • Immediately (no new copy events again) use right-click menu to paste - works as... hoped, pasting the recently locally copied text (which is apparently sync'd to server side clipboard upon using keyboard shortcut to paste server-side).

I'll leave it to you to decide if that is close enough (or to perhaps think over the grim prospect of trying to add something to the displayed right-click menu to get around limitations?).

comment:7 Changed 3 weeks ago by Antoine Martin

Owner: changed from Antoine Martin to alas
Status: reopenednew

DOH. r23724 was incomplete, r24324 fixes that.

I'm pretty sure I had tested that, I even made some MS Edge and IE11 fixes: ticket:1844#comment:13. How did this work before??

Note: we poll for clipboard content changes when we receive any click events, but since we use the new asynchonous API, it is possible that the application will receive its paste event (from the menu click) before we've had a chance to update the clipboard contents...
There are probably some other corner cases, not worth worrying too much about.

Last edited 3 weeks ago by Antoine Martin (previous) (diff)

comment:8 Changed 5 days ago by alas

Owner: changed from alas to Antoine Martin

Silly me, I thought I'd probably just be closing this out as being similar behavior to using Chrome.

Tested again with 4.0-r24412.

It's mostly the same, but it looks like the right-click behavior is "doubly-weird" (I had to triple check to be sure I wasn't imagining this).

As mentioned in #1844, and last mentioned here - with Chrome as a local html5 client... when something is copied locally, then a right-click paste is used server-side: the local contents are not synchronized ... until after a control-v keyboard shortcut is used to paste, after which the right-click paste works as expected.

With Firefox... brace yourself for this... if something is copied locally, then a right-click is used to paste - it will fail until after a keyboard shortcut is used ... which matches the behavior with Chrome as a local html5 client.
But... if you copy something server-side with the Firefox html5 client, then paste locally, then copy locally and try to paste back server-side... it will not only fail over and over if you try to use the right-click menu to paste (as will Chrome)... it will also fail on the FIRST keyboard shortcut paste attempt - but it will SUCCEED on the SECOND keyboard shortcut paste attempt.

It's a very weird case, but I'm not sure it would be defined as an edge case.

On the plus side, once the server-side clipboard sync's with the second keyboard shortcut paste... it then continues to sync (so after the first "double-paste sync"
the next copy locally and paste server side will work as expected... until something is copied server-side... after which another "double-paste sync" will apparently be necessary).

I guess I'll hand this one back for you to marvel over.

Last edited 5 days ago by Antoine Martin (previous) (diff)

comment:9 Changed 4 days ago by Antoine Martin

Owner: changed from Antoine Martin to alas

it will not only fail over and over if you try to use the right-click menu to paste (as will Chrome)...

As per #1844, this works for me with both Firefox and Chrome, on Linux and win32, but only if I connect over https and grant clipboard permissions when asked.

it will not only fail over and over if you try to use the right-click menu to paste (as will Chrome)... it will also fail on the FIRST keyboard shortcut paste attempt - but it will SUCCEED on the SECOND keyboard shortcut paste attempt.

I'm not seeing this particular oddity.
Maybe this has been fixed as part of #1844, or maybe this is a side-effect of no-https and / or no-permissions?
Can you try to reproduce and include the server's -d clipboard log of just the failing attempt? (with "clipboard" debugging also enabled in the html5 client)

r24425 just fixed what looked like a minor warning, but this seems to have helped prevent things from getting wedged: we just ignore invalid clipboard notification messages.

comment:10 Changed 4 days ago by alas

Odd.

When I was testing to close #1844, using 4.0-r24425, I connected a Firefox html5 client to shift the Chrome session - and saw the same behavior (with https)... copied something server-side and pasted locally worked, but then copying locally was pasting (using right-click paste) un-sync'd content repeatedly, and the first keyboard shortcut paste server-side also failed.

When I started a fresh session and connected with the Firefox html5 client however, while the right-click paste server-side was not sync'ing the clipboard (it kept pasting the previous copy server-side, not the subsequent copy locally), the first keyboard shortcut paste sync'd the contents and resulted in the pasting of the contents copied locally.

Firefox doesn't prompt for access to clipboard (including with https connection), perhaps that's the difference.

So... some -d clipboard logs.

Upon the initial copy server-side (copying 'fifty-one', as the logs excerpt will show)... are too long to add to the comment, but I'll include the end excerpt.

2019-11-13 15:47:33,774 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x1760', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2208826620'}>)
2019-11-13 15:47:33,774 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x1760', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2208826620'}>) was owned=True
2019-11-13 15:47:33,775 do_owner_changed()
2019-11-13 15:47:33,775 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1760', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2208826620', 'selection_timestamp': '2208826620'}>)
2019-11-13 15:47:33,775 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1760', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2208826620', 'selection_timestamp': '2208826620'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-13 15:47:33,775 get_contents(TARGETS, <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7f6e05e2c710>, 0) owned=False, have-token=False
2019-11-13 15:47:33,776 requesting local XConvertSelection from 'gedit' as 'TARGETS' into 'CLIPBOARD-TARGETS'
2019-11-13 15:47:33,776 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1767', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2208826623'}>)
2019-11-13 15:47:33,776 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1767', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2208826623'}>)
2019-11-13 15:47:33,777 CLIPBOARD-TARGETS='°\x01\x00\x00\x00\x00\x00\x00¬\x01\x00\x00\x00\x00\x00\x00±\x01\x00\x00\x00\x00\x00\x00»\x01\x00\x00\x00\x00\x00\x00²\x01\x00\x00\x00\x00\x00\x00³\x01\x00\x00\x00\x00\x00\x00ç\x00\x00\x00\x00\x00\x00\x00´\x01\x00\x00\x00\x00\x00\x00µ\x01\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00¶\x01\x00\x00\x00\x00\x00\x00·\x01\x00\x00\x00\x00\x00\x00' (ATOM : 32)
2019-11-13 15:47:33,777 filter_data(TARGETS, ATOM, 32, ..)
2019-11-13 15:47:33,777 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7f6e05e2c710>('ATOM', 32, '"b\'\\\\xb0\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xac .. 0\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"'), time=0
2019-11-13 15:47:33,778 got_targets: ('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'SAVE_TARGETS', 'GTK_TEXT_BUFFER_CONTENTS', 'application/x-gtk-text-buffer-rich-text', 'UTF8_STRING', 'COMPOUND_TEXT', 'TEXT', 'STRING', 'text/plain;charset=utf-8', 'text/plain')
2019-11-13 15:47:33,778 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7f6e05e2c560>, 0) owned=False, have-token=False
2019-11-13 15:47:33,778 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'CLIPBOARD-UTF8_STRING'
2019-11-13 15:47:33,779 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x176a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2208826623'}>)
2019-11-13 15:47:33,779 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x176a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2208826623'}>)
2019-11-13 15:47:33,779 do_property_notify() property 'CLIPBOARD-TARGETS' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-13 15:47:33,780 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1774', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2208826625'}>)
2019-11-13 15:47:33,780 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1774', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2208826625'}>)
2019-11-13 15:47:33,781 CLIPBOARD-UTF8_STRING='fifty-one' (UTF8_STRING : 8)
2019-11-13 15:47:33,781 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-13 15:47:33,781 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7f6e05e2c560>('UTF8_STRING', 8, '"b\'fifty-one\'"'), time=0
2019-11-13 15:47:33,781 got_text_target(UTF8_STRING, 8, "b'fifty-one'")
2019-11-13 15:47:33,781 _send_clipboard_token_handler(X11ClipboardProxy(CLIPBOARD), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'fifty-one'))")
2019-11-13 15:47:33,781 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'fifty-one'")
2019-11-13 15:47:33,782 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:9)
2019-11-13 15:47:33,782 send_clipboard(..) elapsed=2.93, clipboard_stats=deque([6503751.591724973, 6503755.45828521, 6503764.651840262, 6503764.772288734, 6503764.884869825, 6503765.133384078, 6503765.276640872, 6503765.566454551, 6503765.884537024, 6503766.080349265, 6503766.203679016, 6503790.640845892, 6503790.653432194, 6503790.654423035, 6503790.671873935, 6503790.672881622, 6503790.726117184, 6503790.727162029, 6503790.76032761, 6503790.774919128, 6503790.795124146, 6503790.817589575, 6503790.824157308, 6503790.854157787, 6503790.860121561, 6503790.924849552, 6503790.925703003, 6503790.955534038, 6503790.972989096, 6503790.9914092, 6503791.044332812, 6503791.045708254, 6503791.060109389, 6503791.087746448, 6503791.096070972, 6503791.166916057, 6503791.18394039, 6503791.253249339, 6503791.272166233, 6503791.338112143, 6503791.355835549, 6503791.38765601, 6503791.429327697, 6503791.455952834, 6503791.46308386, 6503791.485217821, 6503791.486012427, 6503791.551585817, 6503791.568644593, 6503791.619611155, 6503791.62043099, 6503791.8018043, 6503791.80266011, 6503791.900319595, 6503791.917388771, 6503791.950466896, 6503791.967636194, 6503792.339029145, 6503793.925928851], maxlen=90)
2019-11-13 15:47:33,783 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x177b', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2208826627'}>)
2019-11-13 15:47:33,783 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x177b', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2208826627'}>)
2019-11-13 15:47:33,783 do_property_notify() property 'CLIPBOARD-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type

Pasting locally, as well as then copying locally, produces no logs.

Shifting focus back to the server-side gedit application seems to trigger a little snippet of logs.

2019-11-13 15:48:24,811 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1992', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2208877657', 'selection_timestamp': '2208877657'}>)
2019-11-13 15:48:24,811 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1992', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2208877657', 'selection_timestamp': '2208877657'}>) owned=0, was False (owner=0x0, xid=0x400008), enabled=True, can-send=True

Paste attempts with the right-click menu, however, produce no logs at all.

After three 'failed' paste attempts with the right-click paste option (which all pasted the same 'fifty-one' which was last copied server-side)... using the keyboard shortcut succeeded, pasting 'sixty-six', with the following logs.

2019-11-13 15:48:53,160 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-13 15:48:53,160 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=9
2019-11-13 15:48:53,161 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'sixty-six')}, claim=True, can-receive=True
2019-11-13 15:48:53,161 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-13 15:48:53,161 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'sixty-six\'"') pending=
2019-11-13 15:48:53,162 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-13 15:48:53,162 claim_selection: sending message to root window
2019-11-13 15:48:53,162 claim_selection: done, owned=True
2019-11-13 15:48:53,163 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x27a5', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2208906008', 'selection_timestamp': '2208906008'}>)
2019-11-13 15:48:53,163 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x27a5', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2208906008', 'selection_timestamp': '2208906008'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-13 15:48:53,163 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27a7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906008'}>)
2019-11-13 15:48:53,163 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27a7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906008'}>)
2019-11-13 15:48:53,164 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-13 15:48:53,164 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-13 15:48:53,164 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0fb40 (GdkX11Window at 0x55eb3dfa2290)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2208906008)
2019-11-13 15:48:53,165 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27b7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,166 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27b7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,166 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=GTK_TEXT_BUFFER_CONTENTS, prop=GDK_SELECTION
2019-11-13 15:48:53,166 client is requesting an unknown target: 'GTK_TEXT_BUFFER_CONTENTS'
2019-11-13 15:48:53,166  valid targets: UTF8_STRING, text/plain
2019-11-13 15:48:53,166  dropping the request
2019-11-13 15:48:53,166 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0fd70 (GdkX11Window at 0x55eb3dfa2290)>, GTK_TEXT_BUFFER_CONTENTS, GDK_SELECTION, STRING, 8, "''", 2208906011)
2019-11-13 15:48:53,167 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27bc', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,167 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27bc', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,167 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-13 15:48:53,167 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-13 15:48:53,167 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0f910 (GdkX11Window at 0x55eb3dfa2290)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2208906011)
2019-11-13 15:48:53,168 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27c2', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,168 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27c2', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,168 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=text/plain;charset=utf-8, prop=GDK_SELECTION
2019-11-13 15:48:53,169 client is requesting an unknown target: 'text/plain;charset=utf-8'
2019-11-13 15:48:53,169  using 'UTF8_STRING' instead
2019-11-13 15:48:53,169 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
2019-11-13 15:48:53,169 send_clipboard_request id=12
2019-11-13 15:48:53,169 send_clipboard(..) elapsed=82.27, clipboard_stats=deque([6503751.591724973, 6503755.45828521, 6503764.651840262, 6503764.772288734, 6503764.884869825, 6503765.133384078, 6503765.276640872, 6503765.566454551, 6503765.884537024, 6503766.080349265, 6503766.203679016, 6503790.640845892, 6503790.653432194, 6503790.654423035, 6503790.671873935, 6503790.672881622, 6503790.726117184, 6503790.727162029, 6503790.76032761, 6503790.774919128, 6503790.795124146, 6503790.817589575, 6503790.824157308, 6503790.854157787, 6503790.860121561, 6503790.924849552, 6503790.925703003, 6503790.955534038, 6503790.972989096, 6503790.9914092, 6503791.044332812, 6503791.045708254, 6503791.060109389, 6503791.087746448, 6503791.096070972, 6503791.166916057, 6503791.18394039, 6503791.253249339, 6503791.272166233, 6503791.338112143, 6503791.355835549, 6503791.38765601, 6503791.429327697, 6503791.455952834, 6503791.46308386, 6503791.485217821, 6503791.486012427, 6503791.551585817, 6503791.568644593, 6503791.619611155, 6503791.62043099, 6503791.8018043, 6503791.80266011, 6503791.900319595, 6503791.917388771, 6503791.950466896, 6503791.967636194, 6503792.339029145, 6503793.925928851, 6503873.313084116], maxlen=90)
2019-11-13 15:48:53,174 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
2019-11-13 15:48:53,174 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=9
2019-11-13 15:48:53,174 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'sixty-six\'"') -> "b'sixty-six'"
2019-11-13 15:48:53,174 clipboard got contents(12, 'UTF8_STRING', 8, '"b\'sixty-six\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-11-13 15:48:53,174 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'sixty-six\'"') pending=(<GdkX11.X11Window object at 0x7f6e05e0f910 (GdkX11Window at 0x55eb3dfa2290)>, 'GDK_SELECTION', 2208906011)
2019-11-13 15:48:53,174 setting response 'sixty-six' to property GDK_SELECTION of window 'gedit' as UTF8_STRING
2019-11-13 15:48:53,174 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0f910 (GdkX11Window at 0x55eb3dfa2290)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'sixty-six'", 2208906011)
2019-11-13 15:48:53,176 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27c9', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,176 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27c9', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,179 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-13 15:48:53,180 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-13 15:48:53,180 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0fd70 (GdkX11Window at 0x55eb3dfa2290)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2208906011)
2019-11-13 15:48:53,181 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27ca', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800bfb', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,181 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x27ca', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800bfb', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2208906011'}>)
2019-11-13 15:48:53,181 clipboard request for CLIPBOARD from window 0x800bfb: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-13 15:48:53,181 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-13 15:48:53,181 set_selection_response(<GdkX11.X11Window object at 0x7f6e05e0fd70 (GdkX11Window at 0x55eb3dcd2460)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2208906011)

Interestingly... when I repeat to confirm... I see the behavior I described above after shifting the session from a Chrome html5 client to the Firefox html5 client (the first keyboard shortcut paste attempt into the server-side gedit also fails to sync the clipboard contents, but the second succeeds and pastes "correctly").

The logs seemed confusing though... almost as if the keyboard shortcut paste event had the same logs as the over-long copy event. So, trying again (third time's the charm?).

Type & copy content in server-side gedit ('eighty-one').
Paste locally (keyboard shortcut, not that it matters).
Type and copy something else locally ('eighty-nine').
Right-click paste into server-side gedit. (Probably repeat 2 more times.)
Keyboard shortcut paste into server-side gedit. (Probably repeat.)

And... repeated confusion with inconsistent behavior, until I tried once and the test word I'd copied server-side disappeared when I went to right-click paste what I'd copied locally.
Then I realized I'd been leaving the initial server-side word to be copied highlighted... and the server-side linux clipboard seemed to be 're-syncing' that in some way (only with Firefox html5 clients, for some reason) to the clipboard and producing the 'extra' output of the server-side clipboard content (even with https)... but only intermittently.

So, started making a point of clicking again server-side after the copy event, to un-highlight the word copied... and that eliminated the odd behavior with the first keyboard shortcut paste.

The right-click paste server-side after a local copy, with the Firefox html5 client, failing to sync (and requiring a keyboard shortcut paste event to sync) is still happening though, with http or https - and there is no -d clipboard output whatsoever.

If nothing else though, the behavior is less confusing. (I'll leave the description of my bad testing technique in case anyone else makes the mistake and becomes similarly confused.)


comment:11 Changed 4 days ago by alas

Owner: changed from alas to Antoine Martin

comment:12 Changed 3 days ago by Antoine Martin

Status: newassigned

Firefox uses the legacy clipboard, this shows up in the HTML5 clipboard debug output:

no clipboard write support: no images, navigator.clipboard= Clipboard
​  <prototype>: ClipboardPrototype
​​    constructor: function ()
  ​​  writeText: function writeText()
  ​​  <prototype>: EventTargetPrototype { addEventListener: addEventListener(), removeEventListener: removeEventListener(), dispatchEvent: dispatchEvent(), … }
...
legacy clipboard

Also, the right click event doesn't give us access to the clipboard - so there's not much we can do about that, right click just won't be able to sync clipboard data with Firefox..

Here's a successful copy of the word 'bar' using Firefox, from notepad++ to gedit:

client   5 clipboard polling: no data available
client   5 clipboard paste event, data= bar
client   5 clipboard sending clipboard token with data: bar
...
clipboard request for CLIPBOARD from window 0x80012f: 'gedit', target=TARGETS, prop=GDK_SELECTION
...
client is requesting an unknown target: 'text/plain;charset=utf-8'
 using 'UTF8_STRING' instead
...
setting response 'bar' to property GDK_SELECTION of window 'gedit' as UTF8_STRING

And now when first copying 'foo' from the server and leaving it highlighted:

client   5 clipboard polling: no data available
client   5 clipboard paste event, data= bar
client   5 clipboard sending clipboard token with data: bar
...
clipboard request for CLIPBOARD from window 0x80012f: 'gedit', target=TARGETS, prop=GDK_SELECTION
...
using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
set_selection_response(<GdkX11.X11Window object at 0x7f928f25a640 (GdkX11Window at 0x556dcacda5c0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00¸\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 1938188)

Looks like gedit is just not receiving the TARGETS or not happy with it somehow.

comment:13 Changed 3 days ago by Antoine Martin

Owner: changed from Antoine Martin to alas
Status: assignednew

I'm not so sure that leaving the previous value highlighted is what is causing this bug. Could this be a race condition, and it just made it more likely?
I've hit the same bug on Linux, but much more rarely. And now that I'm trying to debug it on win32, it seems to have gone away too!

Can you try this trivial change and let me know if that fixes the issue:

Index: html5/js/Client.js
===================================================================
--- html5/js/Client.js	(revision 24424)
+++ html5/js/Client.js	(working copy)
@@ -797,7 +797,7 @@
 				me.debug("keyboard", packet);
 				me.send(packet);
 			}
-		}, 0);
+		}, 50);
 	}
 	if (this.clipboard_enabled) {
 		//allow some key events that need to be seen by the browser

(you can bump the delay higher - but it starts to become noticeable..)

comment:14 Changed 3 days ago by alas

Owner: changed from alas to Antoine Martin

Huh... you may be right.

Testing 4.0-r24425 again, after editing /usr/share/xpra/www/js/Client.js to set the 0 to a 50 (me.send delay?)... launching with:

xpra start :13 --no-daemon --bind-tcp=0.0.0.0:1234 --bind-ws=0.0.0.0:1237 --bind-wss=0.0.0.0:1239 --ssl-cert=/etc/xpra/148-ssl.pem  --start-child=xterm --start-child=xterm --exit-with-children -d clipboard

I connect with a Firefox html5 client, and use one of the two xterms to launch gedit.
I type & copy something from gedit ('one').
I paste it locally (programmer's notepad this time, using control-v).
I then type something else locally and copy that ('two', using control-c).
I click back into the firefox client's session tab and re-focus on the gedit app, which I've un-highlighted 'one' in... and try to use right-click menu to paste the newly copied (from local) content 'two'.
Needless to say, right-click paste pastes 'one' over and over.
On the third paste, I use control-v... and get 'one' again.

Got the following logs.

2019-11-14 13:46:19,489 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 13:46:19,489 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=3
2019-11-14 13:46:19,489 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'two')}, claim=True, can-receive=True
2019-11-14 13:46:19,493 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 13:46:19,493 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'two\'"') pending=
2019-11-14 13:46:19,493 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 13:46:19,493 claim_selection: sending message to root window
2019-11-14 13:46:19,494 claim_selection: done, owned=True
2019-11-14 13:46:19,495 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1fbe', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2287952340', 'selection_timestamp': '2287952340'}>)
2019-11-14 13:46:19,495 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1fbe', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2287952340', 'selection_timestamp': '2287952340'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 13:46:19,495 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1fc3', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2287952340'}>)
2019-11-14 13:46:19,496 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1fc3', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2287952340'}>)
2019-11-14 13:46:19,496 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:46:19,496 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:46:19,496 set_selection_response(<GdkX11.X11Window object at 0x7fe324ff9e10 (GdkX11Window at 0x5599093362a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2287952340)

Looking through my own logs, I almost convinced myself that I was wrong, and that 'two' had pasted... but the gedit window stile has 3 'one's and no 'two's (copying the logs has ruined my clipboard integrity).

Repeating...

Focus on Firefox client's session-side gedit, type & copy word ('three').
Click on local programmer's notepad to shift focus, control-v ... pastes 'three'.
Add a couple of linefeeds, then type and copy (control-c) word ('four').
Click back into Firefox client's server-side gedit (previous copy contents not highlighted) and paste.
Right-click paste: 'three'
Click space.
Right-click paste: 'three'
Click space.
Control-v paste: 'three'
Click space.
Control-v paste: 'four'

In this case, rather than shifting focus to the logs, I just took my sweet time.
13:58:56 events are the first control-v paste.
13:59:09 events are the clicking of the space key.
13:59:19 events are the second control-v paste.

2019-11-14 13:58:56,398 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 13:58:56,399 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=4
2019-11-14 13:58:56,399 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'four')}, claim=True, can-receive=True
2019-11-14 13:58:56,400 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 13:58:56,400 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'four\'"') pending=
2019-11-14 13:58:56,401 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 13:58:56,401 claim_selection: sending message to root window
2019-11-14 13:58:56,402 claim_selection: done, owned=True
2019-11-14 13:58:56,402 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x3690', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2288709247', 'selection_timestamp': '2288709247'}>)
2019-11-14 13:58:56,402 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x3690', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2288709247', 'selection_timestamp': '2288709247'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 13:58:56,402 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3691', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288709247'}>)
2019-11-14 13:58:56,403 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3691', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288709247'}>)
2019-11-14 13:58:56,403 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:58:56,403 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:58:56,403 set_selection_response(<GdkX11.X11Window object at 0x7fe324fd1c30 (GdkX11Window at 0x5599093362a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288709247)
2019-11-14 13:59:09,412 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x370e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288722258'}>)
2019-11-14 13:59:09,412 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x370e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288722258'}>)
2019-11-14 13:59:09,415 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:09,416 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:09,416 set_selection_response(<GdkX11.X11Window object at 0x7fe324fdc230 (GdkX11Window at 0x5599093362a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288722258)
2019-11-14 13:59:09,417 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x370f', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009d8', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288722258'}>)
2019-11-14 13:59:09,417 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x370f', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009d8', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288722258'}>)
2019-11-14 13:59:09,417 clipboard request for CLIPBOARD from window 0x8009d8: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:09,417 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:09,417 set_selection_response(<GdkX11.X11Window object at 0x7fe324fdc230 (GdkX11Window at 0x55990906a1c0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288722258)
2019-11-14 13:59:19,205 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 13:59:19,205 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=4
2019-11-14 13:59:19,205 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'four')}, claim=True, can-receive=True
2019-11-14 13:59:19,205 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 13:59:19,206 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'four\'"') pending=
2019-11-14 13:59:19,206 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 13:59:19,206 claim_selection: sending message to root window
2019-11-14 13:59:19,206 claim_selection: done, owned=True
2019-11-14 13:59:19,207 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x379c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2288732052'}>)
2019-11-14 13:59:19,207 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x379c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2288732052'}>)
2019-11-14 13:59:19,208 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=GTK_TEXT_BUFFER_CONTENTS, prop=GDK_SELECTION
2019-11-14 13:59:19,208 client is requesting an unknown target: 'GTK_TEXT_BUFFER_CONTENTS'
2019-11-14 13:59:19,208  valid targets: UTF8_STRING, text/plain
2019-11-14 13:59:19,208  dropping the request
2019-11-14 13:59:19,208 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4be0 (GdkX11Window at 0x5599093362a0)>, GTK_TEXT_BUFFER_CONTENTS, GDK_SELECTION, STRING, 8, "''", 2288732052)
2019-11-14 13:59:19,209 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x379f', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2288732053', 'selection_timestamp': '2288732053'}>)
2019-11-14 13:59:19,209 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x379f', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2288732053', 'selection_timestamp': '2288732053'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 13:59:19,210 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37a1', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009dd', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,210 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37a1', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009dd', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,210 clipboard request for CLIPBOARD from window 0x8009dd: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:19,211 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:19,211 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4c30 (GdkX11Window at 0x55990906a360)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288732054)
2019-11-14 13:59:19,211 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37a8', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,211 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37a8', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,212 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:19,212 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:19,212 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4d20 (GdkX11Window at 0x5599093362a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288732054)
2019-11-14 13:59:19,212 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37b7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,213 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37b7', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,213 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=text/plain;charset=utf-8, prop=GDK_SELECTION
2019-11-14 13:59:19,213 client is requesting an unknown target: 'text/plain;charset=utf-8'
2019-11-14 13:59:19,213  using 'UTF8_STRING' instead
2019-11-14 13:59:19,213 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
2019-11-14 13:59:19,213 send_clipboard_request id=6
2019-11-14 13:59:19,213 send_clipboard(..) elapsed=59.39, clipboard_stats=deque([6582864.27087779, 6582878.078124551, 6582878.366253602, 6582878.571032337, 6582880.037812357, 6582887.912268415, 6582887.919543038, 6582887.928490392, 6582887.946454835, 6582887.954709849, 6582887.961564396, 6582887.999881284, 6582888.026673448, 6582888.033040184, 6582888.104596557, 6582888.105659872, 6582888.131532177, 6582888.25694856, 6582888.271238698, 6582888.288521345, 6582888.304775675, 6582888.820394525, 6582890.041772289, 6583639.864211117, 6583639.879558125, 6583639.894202934, 6583639.912504642, 6583639.928090878, 6583639.963728099, 6583639.980958796, 6583640.009344716, 6583640.01393925, 6583640.040298676, 6583640.046704076, 6583640.064755138, 6583640.093944736, 6583640.098553497, 6583640.160684664, 6583640.17618241, 6583640.195720137, 6583640.210529762, 6583640.230377357, 6583640.244038032, 6583640.259397164, 6583640.280447636, 6583640.2928901, 6583640.343346628, 6583640.360345399, 6583640.376898831, 6583640.395539527, 6583640.411492039, 6583640.429430438, 6583640.448511314, 6583640.540402604, 6583640.556086911, 6583640.797740325, 6583642.442718491, 6583699.357448688], maxlen=90)
2019-11-14 13:59:19,246 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
2019-11-14 13:59:19,246 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=4
2019-11-14 13:59:19,246 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'four\'"') -> "b'four'"
2019-11-14 13:59:19,247 clipboard got contents(6, 'UTF8_STRING', 8, '"b\'four\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-11-14 13:59:19,247 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'four\'"') pending=(<GdkX11.X11Window object at 0x7fe324fe4d20 (GdkX11Window at 0x5599093362a0)>, 'GDK_SELECTION', 2288732054)
2019-11-14 13:59:19,247 setting response 'four' to property GDK_SELECTION of window 'gedit' as UTF8_STRING
2019-11-14 13:59:19,247 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4d20 (GdkX11Window at 0x5599093362a0)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'four'", 2288732054)
2019-11-14 13:59:19,249 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37be', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,249 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37be', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,250 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:19,250 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:19,251 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4dc0 (GdkX11Window at 0x5599093362a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288732054)
2019-11-14 13:59:19,251 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37bf', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009e0', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,252 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x37bf', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x8009e0', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2288732054'}>)
2019-11-14 13:59:19,252 clipboard request for CLIPBOARD from window 0x8009e0: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 13:59:19,253 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 13:59:19,253 set_selection_response(<GdkX11.X11Window object at 0x7fe324fe4dc0 (GdkX11Window at 0x55990906a500)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2288732054)

I guess I should also mention (yesterday I thought it was just an accident of my timing, though it seemed odd) that in several cases in yesterday's testing (pre-editing the Client.js), after copying strings in the gedit, then un-highlighting them, I seemed to be hitting that issue of a missing 1-7-ish of the left-more characters of the string. I wasn't trying to copy quickly, with the mouse veering out of the gedit application window wildly as a result (as was the case with initial testing wondering if the more than 30 requests was the issue)... but it was similar behavior to what I dismissed as being caused by the wild highlighting.

At this point I'm not at all sure what might be a coincidence and what not, though.

I'll try editing the Client.js me.send value a bit more and add a comment if I see a different result with some different value.

comment:15 Changed 3 days ago by alas

Editing the Client.js to use 100, saw the same results.

Going back to 0, however, the first control-v pasted the proper last-copied-locally contents into the server-side gedit.

Interestingly, in this case (in which I was again leaving many seconds between events to separate them) I neglected to un-highlight the initially copied server-side word ('seven', apparently today the server gets odd numbers)... so when I clicked on the server-side gedit inside the Firefox client, the un-highlighting of the string triggered clipboard debugging output.

So, the un-highlighting logs.

2019-11-14 14:25:39,293 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x14ad', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2290312139', 'selection_timestamp': '2290312139'}>)
2019-11-14 14:25:39,293 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x14ad', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2290312139', 'selection_timestamp': '2290312139'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-14 14:25:39,293 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a104b050>, 0) owned=False, have-token=False
2019-11-14 14:25:39,295 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'PRIMARY-UTF8_STRING'
2019-11-14 14:25:39,296 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x14be', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2290312142'}>)
2019-11-14 14:25:39,296 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x14be', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2290312142'}>)
2019-11-14 14:25:39,296 PRIMARY-UTF8_STRING='seven' (UTF8_STRING : 8)
2019-11-14 14:25:39,297 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 14:25:39,297 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a104b050>('UTF8_STRING', 8, '"b\'seven\'"'), time=0
2019-11-14 14:25:39,297 got_text_target(UTF8_STRING, 8, "b'seven'")
2019-11-14 14:25:39,297 _send_clipboard_token_handler(X11ClipboardProxy(PRIMARY), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'seven'))")
2019-11-14 14:25:39,297 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'seven'")
2019-11-14 14:25:39,297 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:5)
2019-11-14 14:25:39,298 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x14c3', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2290312143'}>)
2019-11-14 14:25:39,298 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x14c3', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2290312143'}>)
2019-11-14 14:25:39,298 do_property_notify() property 'PRIMARY-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-14 14:25:40,711 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x155a', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2290313557'}>)
2019-11-14 14:25:40,712 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x155a', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2290313557'}>) was owned=True
2019-11-14 14:25:40,712 do_owner_changed()
2019-11-14 14:25:40,713 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x155a', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2290313557', 'selection_timestamp': '2290313557'}>)
2019-11-14 14:25:40,713 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x155a', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2290313557', 'selection_timestamp': '2290313557'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-14 14:25:40,714 get_contents(TARGETS, <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fc3a105d050>, 0) owned=False, have-token=False
2019-11-14 14:25:40,714 requesting local XConvertSelection from 'gedit' as 'TARGETS' into 'CLIPBOARD-TARGETS'
2019-11-14 14:25:40,715 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1561', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2290313562'}>)
2019-11-14 14:25:40,716 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1561', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2290313562'}>)
2019-11-14 14:25:40,716 CLIPBOARD-TARGETS='°\x01\x00\x00\x00\x00\x00\x00¬\x01\x00\x00\x00\x00\x00\x00±\x01\x00\x00\x00\x00\x00\x00»\x01\x00\x00\x00\x00\x00\x00²\x01\x00\x00\x00\x00\x00\x00³\x01\x00\x00\x00\x00\x00\x00ç\x00\x00\x00\x00\x00\x00\x00´\x01\x00\x00\x00\x00\x00\x00µ\x01\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00¶\x01\x00\x00\x00\x00\x00\x00·\x01\x00\x00\x00\x00\x00\x00' (ATOM : 32)
2019-11-14 14:25:40,717 filter_data(TARGETS, ATOM, 32, ..)
2019-11-14 14:25:40,717 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fc3a105d050>('ATOM', 32, '"b\'\\\\xb0\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xac .. 0\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"'), time=0
2019-11-14 14:25:40,718 got_targets: ('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'SAVE_TARGETS', 'GTK_TEXT_BUFFER_CONTENTS', 'application/x-gtk-text-buffer-rich-text', 'UTF8_STRING', 'COMPOUND_TEXT', 'TEXT', 'STRING', 'text/plain;charset=utf-8', 'text/plain')
2019-11-14 14:25:40,718 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a105d0e0>, 0) owned=False, have-token=False
2019-11-14 14:25:40,719 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'CLIPBOARD-UTF8_STRING'
2019-11-14 14:25:40,720 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1564', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2290313563'}>)
2019-11-14 14:25:40,720 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1564', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2290313563'}>)
2019-11-14 14:25:40,720 do_property_notify() property 'CLIPBOARD-TARGETS' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-14 14:25:40,722 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x156e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2290313566'}>)
2019-11-14 14:25:40,722 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x156e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2290313566'}>)
2019-11-14 14:25:40,723 CLIPBOARD-UTF8_STRING='seven' (UTF8_STRING : 8)
2019-11-14 14:25:40,723 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 14:25:40,723 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a105d0e0>('UTF8_STRING', 8, '"b\'seven\'"'), time=0
2019-11-14 14:25:40,723 got_text_target(UTF8_STRING, 8, "b'seven'")
2019-11-14 14:25:40,724 _send_clipboard_token_handler(X11ClipboardProxy(CLIPBOARD), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'seven'))")
2019-11-14 14:25:40,724 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'seven'")
2019-11-14 14:25:40,724 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:5)
2019-11-14 14:25:40,725 send_clipboard(..) elapsed=2.65, clipboard_stats=deque([6585278.2194474, 6585278.22622585, 6585278.234508618, 6585278.260718291, 6585278.276564194, 6585278.277240787, 6585278.283994178, 6585278.303001548, 6585278.321612405, 6585278.334047245, 6585278.390606944, 6585278.408099591, 6585278.599854388, 6585278.614786903, 6585278.638824477, 6585278.648803071, 6585278.75190901, 6585278.768513266, 6585278.878978744, 6585278.89381265, 6585278.941666979, 6585278.946190056, 6585278.963499006, 6585278.976238606, 6585278.994491189, 6585279.009616262, 6585279.078701234, 6585279.094857287, 6585279.44131522, 6585280.868672891], maxlen=90)
2019-11-14 14:25:40,725 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1575', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2290313569'}>)
2019-11-14 14:25:40,726 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x1575', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2290313569'}>)
2019-11-14 14:25:40,726 do_property_notify() property 'CLIPBOARD-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type

Then there was a right-click paste, then a space, then a right-click, then another space... all with no logs.

Then there's something I am not sure what might have triggered.

2019-11-14 14:26:06,737 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1752', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2290339582', 'selection_timestamp': '2290339582'}>)
2019-11-14 14:26:06,738 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1752', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2290339582', 'selection_timestamp': '2290339582'}>) owned=0, was False (owner=0x0, xid=0x400008), enabled=True, can-send=True

Then the first control-v paste, which pasted the expected local-side copied contents ('eight').

2019-11-14 14:26:53,133 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 14:26:53,134 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=5
2019-11-14 14:26:53,134 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'eight')}, claim=True, can-receive=True
2019-11-14 14:26:53,134 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 14:26:53,134 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'eight\'"') pending=
2019-11-14 14:26:53,135 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 14:26:53,135 claim_selection: sending message to root window
2019-11-14 14:26:53,135 claim_selection: done, owned=True
2019-11-14 14:26:53,136 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1e21', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2290385981', 'selection_timestamp': '2290385981'}>)
2019-11-14 14:26:53,136 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x1e21', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2290385981', 'selection_timestamp': '2290385981'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 14:26:53,136 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e22', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385981'}>)
2019-11-14 14:26:53,136 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e22', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385981'}>)
2019-11-14 14:26:53,136 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:26:53,136 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:26:53,137 set_selection_response(<GdkX11.X11Window object at 0x7fc3a105b550 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2290385981)
2019-11-14 14:26:53,143 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e33', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,143 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e33', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,144 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=GTK_TEXT_BUFFER_CONTENTS, prop=GDK_SELECTION
2019-11-14 14:26:53,144 client is requesting an unknown target: 'GTK_TEXT_BUFFER_CONTENTS'
2019-11-14 14:26:53,144  valid targets: UTF8_STRING, text/plain
2019-11-14 14:26:53,144  dropping the request
2019-11-14 14:26:53,144 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe9c80 (GdkX11Window at 0x55ce557f32a0)>, GTK_TEXT_BUFFER_CONTENTS, GDK_SELECTION, STRING, 8, "''", 2290385989)
2019-11-14 14:26:53,144 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e38', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,145 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e38', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,145 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:26:53,145 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:26:53,145 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe9f50 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2290385989)
2019-11-14 14:26:53,146 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e3e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,146 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e3e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,146 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=text/plain;charset=utf-8, prop=GDK_SELECTION
2019-11-14 14:26:53,146 client is requesting an unknown target: 'text/plain;charset=utf-8'
2019-11-14 14:26:53,146  using 'UTF8_STRING' instead
2019-11-14 14:26:53,146 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
2019-11-14 14:26:53,146 send_clipboard_request id=8
2019-11-14 14:26:53,147 send_clipboard(..) elapsed=75.06, clipboard_stats=deque([6585278.2194474, 6585278.22622585, 6585278.234508618, 6585278.260718291, 6585278.276564194, 6585278.277240787, 6585278.283994178, 6585278.303001548, 6585278.321612405, 6585278.334047245, 6585278.390606944, 6585278.408099591, 6585278.599854388, 6585278.614786903, 6585278.638824477, 6585278.648803071, 6585278.75190901, 6585278.768513266, 6585278.878978744, 6585278.89381265, 6585278.941666979, 6585278.946190056, 6585278.963499006, 6585278.976238606, 6585278.994491189, 6585279.009616262, 6585279.078701234, 6585279.094857287, 6585279.44131522, 6585280.868672891, 6585353.290735527], maxlen=90)
2019-11-14 14:26:53,185 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
2019-11-14 14:26:53,185 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=5
2019-11-14 14:26:53,186 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'eight\'"') -> "b'eight'"
2019-11-14 14:26:53,186 clipboard got contents(8, 'UTF8_STRING', 8, '"b\'eight\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-11-14 14:26:53,186 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'eight\'"') pending=(<GdkX11.X11Window object at 0x7fc3a0fe9f50 (GdkX11Window at 0x55ce557f32a0)>, 'GDK_SELECTION', 2290385989)
2019-11-14 14:26:53,186 setting response 'eight' to property GDK_SELECTION of window 'gedit' as UTF8_STRING
2019-11-14 14:26:53,186 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe9f50 (GdkX11Window at 0x55ce557f32a0)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'eight'", 2290385989)
2019-11-14 14:26:53,189 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e45', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,189 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e45', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,190 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:26:53,190 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:26:53,190 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe9d20 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2290385989)
2019-11-14 14:26:53,191 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e45', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800b3d', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,192 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x1e45', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800b3d', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2290385989'}>)
2019-11-14 14:26:53,192 clipboard request for CLIPBOARD from window 0x800b3d: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:26:53,192 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:26:53,193 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe9d20 (GdkX11Window at 0x55ce5589a890)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2290385989)

And... I'll post this, then try once more and put it into another comment (and I'll pretend that will make it less confusing).

comment:16 Changed 3 days ago by alas

Well... now it looks like the 'mystery logs' correspond to a return... which in this pass (which matches the one before last) led to the first control-v paste event being a failure (pasted the odd server-side string rather than the shiny new even one copied more recently locally).

Perhaps that change is the difference?

Some logs here, for comparison sake...
Here we have the very last bit of the initial copy server-side (in this case nine was typoed as 'none', and let slide) at :05, followed by a click and return to un-highlight the string in the gedit and to enable easier access to the next line for the later pasting event, at :07.

2019-11-14 14:44:05,103 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x2d7a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2291417947'}>)
2019-11-14 14:44:05,103 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x2d7a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2291417947'}>)
2019-11-14 14:44:05,103 CLIPBOARD-UTF8_STRING='none' (UTF8_STRING : 8)
2019-11-14 14:44:05,104 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 14:44:05,104 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0fedb00>('UTF8_STRING', 8, '"b\'none\'"'), time=0
2019-11-14 14:44:05,104 got_text_target(UTF8_STRING, 8, "b'none'")
2019-11-14 14:44:05,104 _send_clipboard_token_handler(X11ClipboardProxy(CLIPBOARD), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'none'))")
2019-11-14 14:44:05,104 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'none'")
2019-11-14 14:44:05,104 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:4)
2019-11-14 14:44:05,104 send_clipboard(..) elapsed=2.23, clipboard_stats=deque([6585278.2194474, 6585278.22622585, 6585278.234508618, 6585278.260718291, 6585278.276564194, 6585278.277240787, 6585278.283994178, 6585278.303001548, 6585278.321612405, 6585278.334047245, 6585278.390606944, 6585278.408099591, 6585278.599854388, 6585278.614786903, 6585278.638824477, 6585278.648803071, 6585278.75190901, 6585278.768513266, 6585278.878978744, 6585278.89381265, 6585278.941666979, 6585278.946190056, 6585278.963499006, 6585278.976238606, 6585278.994491189, 6585279.009616262, 6585279.078701234, 6585279.094857287, 6585279.44131522, 6585280.868672891, 6585353.290735527, 6586382.973361189, 6586383.00026332, 6586383.018792835, 6586383.019377195, 6586383.078449961, 6586383.079078738, 6586383.088849149, 6586383.225993508, 6586383.245315313, 6586383.263075439, 6586383.276896626, 6586383.295622596, 6586383.335786031, 6586383.354079972, 6586383.368532949, 6586383.404008105, 6586383.424484515, 6586383.50705279, 6586383.527526841, 6586383.542631057, 6586383.568290148, 6586383.576901319, 6586383.601298334, 6586383.612313234, 6586383.627621939, 6586383.641024774, 6586383.657914353, 6586383.809940311, 6586383.826144334, 6586384.027456519, 6586384.037407595, 6586384.038525115, 6586385.248532949], maxlen=90)
2019-11-14 14:44:05,105 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x2d81', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2291417950'}>)
2019-11-14 14:44:05,105 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x2d81', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2291417950'}>)
2019-11-14 14:44:05,106 do_property_notify() property 'CLIPBOARD-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-14 14:44:07,189 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x2e88', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2291420035', 'selection_timestamp': '2291420034'}>)
2019-11-14 14:44:07,189 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x2e88', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2291420035', 'selection_timestamp': '2291420034'}>) owned=0, was False (owner=0x0, xid=0x400008), enabled=True, can-send=True

Then I clicked locally and pasted, then copied the next expected string ('ten')... and then clicked focus to that new line of the server-side gedit... followed by pasting 'none', then space, then pasting again with the right-click menu... no logs.

And here are the logs of the control-v (14:45:20), then the space (14:45:44), then the second (successful) control-v (14:45:58-59).

2019-11-14 14:45:20,736 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 14:45:20,736 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=3
2019-11-14 14:45:20,737 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'ten')}, claim=True, can-receive=True
2019-11-14 14:45:20,740 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 14:45:20,740 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'ten\'"') pending=
2019-11-14 14:45:20,741 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 14:45:20,741 claim_selection: sending message to root window
2019-11-14 14:45:20,741 claim_selection: done, owned=True
2019-11-14 14:45:20,743 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x38e3', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2291493587', 'selection_timestamp': '2291493587'}>)
2019-11-14 14:45:20,743 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x38e3', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2291493587', 'selection_timestamp': '2291493587'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 14:45:20,743 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x38e4', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291493587'}>)
2019-11-14 14:45:20,743 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x38e4', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291493587'}>)
2019-11-14 14:45:20,744 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:20,744 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:20,744 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0fe5870 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291493587)
2019-11-14 14:45:44,028 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3963', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291516872'}>)
2019-11-14 14:45:44,028 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3963', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291516872'}>)
2019-11-14 14:45:44,028 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:44,029 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:44,029 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f6d500 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291516872)
2019-11-14 14:45:44,030 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3963', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800c01', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291516872'}>)
2019-11-14 14:45:44,031 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3963', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800c01', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291516872'}>)
2019-11-14 14:45:44,031 clipboard request for CLIPBOARD from window 0x800c01: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:44,032 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:44,032 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f6d500 (GdkX11Window at 0x55ce558aed90)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291516872)
2019-11-14 14:45:58,958 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 14:45:58,958 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=3
2019-11-14 14:45:58,958 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'ten')}, claim=True, can-receive=True
2019-11-14 14:45:58,959 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 14:45:58,959 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'ten\'"') pending=
2019-11-14 14:45:58,960 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 14:45:58,960 claim_selection: sending message to root window
2019-11-14 14:45:58,960 claim_selection: done, owned=True
2019-11-14 14:45:58,961 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x39ed', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2291531806', 'selection_timestamp': '2291531806'}>)
2019-11-14 14:45:58,961 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x39ed', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2291531806', 'selection_timestamp': '2291531806'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 14:45:58,961 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x39ee', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531806'}>)
2019-11-14 14:45:58,962 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x39ee', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531806'}>)
2019-11-14 14:45:58,962 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:58,962 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:58,962 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f783c0 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291531806)
2019-11-14 14:45:58,969 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x39fb', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,970 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x39fb', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,970 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=GTK_TEXT_BUFFER_CONTENTS, prop=GDK_SELECTION
2019-11-14 14:45:58,970 client is requesting an unknown target: 'GTK_TEXT_BUFFER_CONTENTS'
2019-11-14 14:45:58,970  valid targets: UTF8_STRING, text/plain
2019-11-14 14:45:58,970  dropping the request
2019-11-14 14:45:58,970 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f78910 (GdkX11Window at 0x55ce557f32a0)>, GTK_TEXT_BUFFER_CONTENTS, GDK_SELECTION, STRING, 8, "''", 2291531816)
2019-11-14 14:45:58,971 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a00', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,971 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a00', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,971 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:58,971 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:58,971 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f78960 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291531816)
2019-11-14 14:45:58,972 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a06', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,972 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a06', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:58,972 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=text/plain;charset=utf-8, prop=GDK_SELECTION
2019-11-14 14:45:58,972 client is requesting an unknown target: 'text/plain;charset=utf-8'
2019-11-14 14:45:58,972  using 'UTF8_STRING' instead
2019-11-14 14:45:58,973 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
2019-11-14 14:45:58,973 send_clipboard_request id=9
2019-11-14 14:45:58,973 send_clipboard(..) elapsed=116.04, clipboard_stats=deque([6585278.2194474, 6585278.22622585, 6585278.234508618, 6585278.260718291, 6585278.276564194, 6585278.277240787, 6585278.283994178, 6585278.303001548, 6585278.321612405, 6585278.334047245, 6585278.390606944, 6585278.408099591, 6585278.599854388, 6585278.614786903, 6585278.638824477, 6585278.648803071, 6585278.75190901, 6585278.768513266, 6585278.878978744, 6585278.89381265, 6585278.941666979, 6585278.946190056, 6585278.963499006, 6585278.976238606, 6585278.994491189, 6585279.009616262, 6585279.078701234, 6585279.094857287, 6585279.44131522, 6585280.868672891, 6585353.290735527, 6586382.973361189, 6586383.00026332, 6586383.018792835, 6586383.019377195, 6586383.078449961, 6586383.079078738, 6586383.088849149, 6586383.225993508, 6586383.245315313, 6586383.263075439, 6586383.276896626, 6586383.295622596, 6586383.335786031, 6586383.354079972, 6586383.368532949, 6586383.404008105, 6586383.424484515, 6586383.50705279, 6586383.527526841, 6586383.542631057, 6586383.568290148, 6586383.576901319, 6586383.601298334, 6586383.612313234, 6586383.627621939, 6586383.641024774, 6586383.657914353, 6586383.809940311, 6586383.826144334, 6586384.027456519, 6586384.037407595, 6586384.038525115, 6586385.248532949, 6586499.11701868], maxlen=90)
2019-11-14 14:45:59,003 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
2019-11-14 14:45:59,003 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=3
2019-11-14 14:45:59,004 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'ten\'"') -> "b'ten'"
2019-11-14 14:45:59,004 clipboard got contents(9, 'UTF8_STRING', 8, '"b\'ten\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-11-14 14:45:59,004 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'ten\'"') pending=(<GdkX11.X11Window object at 0x7fc3a0f78960 (GdkX11Window at 0x55ce557f32a0)>, 'GDK_SELECTION', 2291531816)
2019-11-14 14:45:59,004 setting response 'ten' to property GDK_SELECTION of window 'gedit' as UTF8_STRING
2019-11-14 14:45:59,005 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f78960 (GdkX11Window at 0x55ce557f32a0)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'ten'", 2291531816)
2019-11-14 14:45:59,006 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a0d', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:59,006 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a0d', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:59,007 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:59,007 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:59,008 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f78910 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291531816)
2019-11-14 14:45:59,009 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a0e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800c06', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:59,009 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x3a0e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800c06', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2291531816'}>)
2019-11-14 14:45:59,010 clipboard request for CLIPBOARD from window 0x800c06: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 14:45:59,010 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 14:45:59,010 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f78910 (GdkX11Window at 0x55ce5588d0c0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2291531816)

comment:17 Changed 3 days ago by alas

Well, unfortunately attempting to repro the test where the server-side gedit string was left highlighted resulted in yet a different result. As I was highlighting I noticed a flash of the arrow cursor indicating that the mouse had somehow 'caught' the edge of a window, the gedit I assume, and a re-sizing event was 'available'?

I waited a little between spotting that during the highlighting, and the clicking of the control-c to copy the highlighted content... I think... so I can give you the last of the logs from the highlighting, then the logs for the control-c copy.

(They look about the same to me, but maybe you'll spot something... the highlighted text had another typo that I let slide, 'thjirteen'... which will be evident in the logs - but in this case, pasting locally just pasted 'irteen'.)

End of the long block of highlighting logs.

2019-11-14 15:00:46,779 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6465', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2292419627', 'selection_timestamp': '2292419618'}>)
2019-11-14 15:00:46,780 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6465', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2292419627', 'selection_timestamp': '2292419618'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-14 15:00:46,780 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37680>, 0) owned=False, have-token=False
2019-11-14 15:00:46,780 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'PRIMARY-UTF8_STRING'
2019-11-14 15:00:46,782 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x646b', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419628'}>)
2019-11-14 15:00:46,782 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x646b', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419628'}>)
2019-11-14 15:00:46,782 PRIMARY-UTF8_STRING='thjirteen' (UTF8_STRING : 8)
2019-11-14 15:00:46,782 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 15:00:46,783 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37680>('UTF8_STRING', 8, '"b\'thjirteen\'"'), time=0
2019-11-14 15:00:46,783 got_text_target(UTF8_STRING, 8, "b'thjirteen'")
2019-11-14 15:00:46,783 _send_clipboard_token_handler(X11ClipboardProxy(PRIMARY), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'thjirteen'))")
2019-11-14 15:00:46,783 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'thjirteen'")
2019-11-14 15:00:46,783 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:9)
2019-11-14 15:00:46,783 send_clipboard(..) elapsed=0.59, clipboard_stats=deque([6587210.56638484, 6587210.582819019, 6587210.61857069, 6587210.636208736, 6587210.637768416, 6587210.672628874, 6587210.673715544, 6587210.701597497, 6587210.746979134, 6587210.748912778, 6587210.783537324, 6587210.789534985, 6587210.89984596, 6587210.901432897, 6587210.931105013, 6587210.932484124, 6587210.961230537, 6587210.979594865, 6587210.995990873, 6587211.035049956, 6587211.03649812, 6587211.102847814, 6587211.104236326, 6587211.155218528, 6587211.156610301, 6587211.206055389, 6587211.207461739, 6587211.221818432, 6587211.333233118, 6587211.350540022, 6587211.366796744, 6587211.407838299, 6587211.40939212, 6587211.589482759, 6587220.063509035, 6587326.246659061, 6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305], maxlen=90)
2019-11-14 15:00:46,784 Warning: more than 30 clipboard requests per second!
2019-11-14 15:00:46,784 54 events in the last 3 seconds: [6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305]
2019-11-14 15:00:46,784 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6470', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419630'}>)
2019-11-14 15:00:46,785 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6470', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419630'}>)
2019-11-14 15:00:46,785 do_property_notify() property 'PRIMARY-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-14 15:00:46,937 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6481', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2292419784', 'selection_timestamp': '2292419784'}>)
2019-11-14 15:00:46,937 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6481', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'PRIMARY', 'timestamp': '2292419784', 'selection_timestamp': '2292419784'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-14 15:00:46,937 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37680>, 0) owned=False, have-token=False
2019-11-14 15:00:46,938 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'PRIMARY-UTF8_STRING'
2019-11-14 15:00:46,940 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6488', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419786'}>)
2019-11-14 15:00:46,940 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6488', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419786'}>)
2019-11-14 15:00:46,941 PRIMARY-UTF8_STRING='thjirteen' (UTF8_STRING : 8)
2019-11-14 15:00:46,941 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 15:00:46,941 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37680>('UTF8_STRING', 8, '"b\'thjirteen\'"'), time=0
2019-11-14 15:00:46,941 got_text_target(UTF8_STRING, 8, "b'thjirteen'")
2019-11-14 15:00:46,941 _send_clipboard_token_handler(X11ClipboardProxy(PRIMARY), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'thjirteen'))")
2019-11-14 15:00:46,941 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'thjirteen'")
2019-11-14 15:00:46,942 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:9)
2019-11-14 15:00:46,942 send_clipboard(..) elapsed=0.74, clipboard_stats=deque([6587210.582819019, 6587210.61857069, 6587210.636208736, 6587210.637768416, 6587210.672628874, 6587210.673715544, 6587210.701597497, 6587210.746979134, 6587210.748912778, 6587210.783537324, 6587210.789534985, 6587210.89984596, 6587210.901432897, 6587210.931105013, 6587210.932484124, 6587210.961230537, 6587210.979594865, 6587210.995990873, 6587211.035049956, 6587211.03649812, 6587211.102847814, 6587211.104236326, 6587211.155218528, 6587211.156610301, 6587211.206055389, 6587211.207461739, 6587211.221818432, 6587211.333233118, 6587211.350540022, 6587211.366796744, 6587211.407838299, 6587211.40939212, 6587211.589482759, 6587220.063509035, 6587326.246659061, 6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305, 6587387.08598302], maxlen=90)
2019-11-14 15:00:46,942 Warning: more than 30 clipboard requests per second!
2019-11-14 15:00:46,942 55 events in the last 3 seconds: [6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305, 6587387.08598302]
2019-11-14 15:00:46,943 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x648e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419788'}>)
2019-11-14 15:00:46,943 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x648e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'PRIMARY-UTF8_STRING', 'time': '2292419788'}>)
2019-11-14 15:00:46,943 do_property_notify() property 'PRIMARY-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type

Then the control-c.

2019-11-14 15:00:59,389 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x6621', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2292432235'}>)
2019-11-14 15:00:59,389 do_xpra_selection_clear(<X11:SelectionClear {'send_event': '0', 'serial': '0x6621', 'delivered_to': '0x400008', 'window': '0x400008', 'selection': 'CLIPBOARD', 'time': '2292432235'}>) was owned=True
2019-11-14 15:00:59,389 do_owner_changed()
2019-11-14 15:00:59,390 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6621', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2292432235', 'selection_timestamp': '2292432235'}>)
2019-11-14 15:00:59,390 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6621', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x800124', 'selection': 'CLIPBOARD', 'timestamp': '2292432235', 'selection_timestamp': '2292432235'}>) owned=False, was False (owner=0x800124, xid=0x400008), enabled=True, can-send=True
2019-11-14 15:00:59,390 get_contents(TARGETS, <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fc3a0f37290>, 0) owned=False, have-token=True
2019-11-14 15:00:59,391 requesting local XConvertSelection from 'gedit' as 'TARGETS' into 'CLIPBOARD-TARGETS'
2019-11-14 15:00:59,391 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6627', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2292432238'}>)
2019-11-14 15:00:59,391 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6627', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2292432238'}>)
2019-11-14 15:00:59,392 CLIPBOARD-TARGETS='°\x01\x00\x00\x00\x00\x00\x00¬\x01\x00\x00\x00\x00\x00\x00±\x01\x00\x00\x00\x00\x00\x00»\x01\x00\x00\x00\x00\x00\x00²\x01\x00\x00\x00\x00\x00\x00³\x01\x00\x00\x00\x00\x00\x00ç\x00\x00\x00\x00\x00\x00\x00´\x01\x00\x00\x00\x00\x00\x00µ\x01\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00¶\x01\x00\x00\x00\x00\x00\x00·\x01\x00\x00\x00\x00\x00\x00' (ATOM : 32)
2019-11-14 15:00:59,392 filter_data(TARGETS, ATOM, 32, ..)
2019-11-14 15:00:59,392 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fc3a0f37290>('ATOM', 32, '"b\'\\\\xb0\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xac .. 0\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"'), time=0
2019-11-14 15:00:59,393 got_targets: ('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'SAVE_TARGETS', 'GTK_TEXT_BUFFER_CONTENTS', 'application/x-gtk-text-buffer-rich-text', 'UTF8_STRING', 'COMPOUND_TEXT', 'TEXT', 'STRING', 'text/plain;charset=utf-8', 'text/plain')
2019-11-14 15:00:59,393 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37320>, 0) owned=False, have-token=True
2019-11-14 15:00:59,393 requesting local XConvertSelection from 'gedit' as 'UTF8_STRING' into 'CLIPBOARD-UTF8_STRING'
2019-11-14 15:00:59,393 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x662a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2292432238'}>)
2019-11-14 15:00:59,394 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x662a', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-TARGETS', 'time': '2292432238'}>)
2019-11-14 15:00:59,394 do_property_notify() property 'CLIPBOARD-TARGETS' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type
2019-11-14 15:00:59,395 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6637', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2292432240'}>)
2019-11-14 15:00:59,395 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x6637', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2292432240'}>)
2019-11-14 15:00:59,395 CLIPBOARD-UTF8_STRING='thjirteen' (UTF8_STRING : 8)
2019-11-14 15:00:59,395 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
2019-11-14 15:00:59,395 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fc3a0f37320>('UTF8_STRING', 8, '"b\'thjirteen\'"'), time=0
2019-11-14 15:00:59,396 got_text_target(UTF8_STRING, 8, "b'thjirteen'")
2019-11-14 15:00:59,396 _send_clipboard_token_handler(X11ClipboardProxy(CLIPBOARD), "(('UTF8_STRING', 'TEXT', 'STRING', 'text/plain'), ('UTF8_STRING', 'UTF8_STRING', 8, b'thjirteen'))")
2019-11-14 15:00:59,396 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'thjirteen'")
2019-11-14 15:00:59,396 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:9)
2019-11-14 15:00:59,396 send_clipboard(..) elapsed=13.17, clipboard_stats=deque([6587210.61857069, 6587210.636208736, 6587210.637768416, 6587210.672628874, 6587210.673715544, 6587210.701597497, 6587210.746979134, 6587210.748912778, 6587210.783537324, 6587210.789534985, 6587210.89984596, 6587210.901432897, 6587210.931105013, 6587210.932484124, 6587210.961230537, 6587210.979594865, 6587210.995990873, 6587211.035049956, 6587211.03649812, 6587211.102847814, 6587211.104236326, 6587211.155218528, 6587211.156610301, 6587211.206055389, 6587211.207461739, 6587211.221818432, 6587211.333233118, 6587211.350540022, 6587211.366796744, 6587211.407838299, 6587211.40939212, 6587211.589482759, 6587220.063509035, 6587326.246659061, 6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305, 6587387.08598302, 6587399.540264702], maxlen=90)
2019-11-14 15:00:59,397 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x663e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2292432242'}>)
2019-11-14 15:00:59,397 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x663e', 'delivered_to': '0x400008', 'window': '0x400008', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '2292432242'}>)
2019-11-14 15:00:59,397 do_property_notify() property 'CLIPBOARD-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 597, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
xpra.x11.bindings.window_bindings.BadPropertyType: None type

Then I pasted locally (again, getting only 'irteen'), then typed and copied 'fourteen'.

I then clicked back on the server-side gedit window to return focus, with the text 'thjirteen' still highlighted.
I clicked again to un-highlight, and got the following logs.

2019-11-14 15:01:48,205 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6a8d', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2292481052', 'selection_timestamp': '2292481051'}>)
2019-11-14 15:01:48,206 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x6a8d', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': 'None', 'selection': 'PRIMARY', 'timestamp': '2292481052', 'selection_timestamp': '2292481051'}>) owned=0, was False (owner=0x0, xid=0x400008), enabled=True, can-send=True

... but didn't see any logs when using enter afterward to move to a new line.

Pasting server-side with the right-click menu twice, with a space between, pasted the expected 'thjirteen' twice with no logs, and no logs with another space.

Pasting with a control-v again pasted 'thjirteen'...

2019-11-14 15:02:20,953 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 15:02:20,954 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=9
2019-11-14 15:02:20,954 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'thjirteen')}, claim=True, can-receive=True
2019-11-14 15:02:20,955 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 15:02:20,956 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'thjirteen\'"') pending=
2019-11-14 15:02:20,956 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 15:02:20,956 claim_selection: sending message to root window
2019-11-14 15:02:20,957 claim_selection: done, owned=True
2019-11-14 15:02:20,957 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x73fc', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2292513802', 'selection_timestamp': '2292513802'}>)
2019-11-14 15:02:20,958 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x73fc', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2292513802', 'selection_timestamp': '2292513802'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 15:02:20,961 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7401', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292513805'}>)
2019-11-14 15:02:20,961 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7401', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292513805'}>)
2019-11-14 15:02:20,962 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:20,962 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:20,962 set_selection_response(<GdkX11.X11Window object at 0x7fc3a3f346e0 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292513805)

And then a space.

2019-11-14 15:02:37,110 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x747c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292529952'}>)
2019-11-14 15:02:37,110 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x747c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292529952'}>)
2019-11-14 15:02:37,111 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:37,111 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:37,112 set_selection_response(<GdkX11.X11Window object at 0x7fc3a100f4b0 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292529952)
2019-11-14 15:02:37,112 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x747c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800e0c', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292529952'}>)
2019-11-14 15:02:37,113 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x747c', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800e0c', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292529952'}>)
2019-11-14 15:02:37,113 clipboard request for CLIPBOARD from window 0x800e0c: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:37,113 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:37,114 set_selection_response(<GdkX11.X11Window object at 0x7fc3a100f4b0 (GdkX11Window at 0x55ce557c8920)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292529952)

And then another control-v... again pasted 'thjirteen' - making me suspect that there was something that caused that to re-sync to the clipboard server-side. Was it the unexpected arrow-cursor that led to the local-clipboard only syncing 'irteen' come back to haunt me? Or was there something 'different' about my click for focus then click to un-highlight? (Did the server-side Fedora clipboard re-sync the highlighted text to the clipboard?...)

2019-11-14 15:02:44,814 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-11-14 15:02:44,814 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=9
2019-11-14 15:02:44,814 got token, selection=CLIPBOARD, targets=[b'UTF8_STRING', b'text/plain'], target data={'UTF8_STRING': ('UTF8_STRING', 8, b'thjirteen')}, claim=True, can-receive=True
2019-11-14 15:02:44,814 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\xe7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\xb7\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=
2019-11-14 15:02:44,815 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'thjirteen\'"') pending=
2019-11-14 15:02:44,815 claim_selection: set selection owner returned 1, owner=0x400008
2019-11-14 15:02:44,815 claim_selection: sending message to root window
2019-11-14 15:02:44,815 claim_selection: done, owned=True
2019-11-14 15:02:44,815 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x74e7', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2292537661', 'selection_timestamp': '2292537661'}>)
2019-11-14 15:02:44,816 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x74e7', 'delivered_to': '0x400008', 'window': '0x400008', 'subtype': '0', 'owner': '0x400008', 'selection': 'CLIPBOARD', 'timestamp': '2292537661', 'selection_timestamp': '2292537661'}>) owned=True, was True (owner=0x400008, xid=0x400008), enabled=True, can-send=True
2019-11-14 15:02:44,816 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74e8', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537661'}>)
2019-11-14 15:02:44,816 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74e8', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537661'}>)
2019-11-14 15:02:44,816 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:44,816 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:44,817 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f7d190 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292537661)
2019-11-14 15:02:44,818 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74f5', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,818 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74f5', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'GTK_TEXT_BUFFER_CONTENTS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,818 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=GTK_TEXT_BUFFER_CONTENTS, prop=GDK_SELECTION
2019-11-14 15:02:44,818 client is requesting an unknown target: 'GTK_TEXT_BUFFER_CONTENTS'
2019-11-14 15:02:44,818  valid targets: UTF8_STRING, text/plain
2019-11-14 15:02:44,818  dropping the request
2019-11-14 15:02:44,818 set_selection_response(<GdkX11.X11Window object at 0x7fc3a102ff50 (GdkX11Window at 0x55ce557f32a0)>, GTK_TEXT_BUFFER_CONTENTS, GDK_SELECTION, STRING, 8, "''", 2292537664)
2019-11-14 15:02:44,819 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74fa', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,819 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x74fa', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,819 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:44,819 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:44,820 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f7d190 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292537664)
2019-11-14 15:02:44,820 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7500', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,820 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7500', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'text/plain;charset=utf-8', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,820 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=text/plain;charset=utf-8, prop=GDK_SELECTION
2019-11-14 15:02:44,821 client is requesting an unknown target: 'text/plain;charset=utf-8'
2019-11-14 15:02:44,821  using 'UTF8_STRING' instead
2019-11-14 15:02:44,821 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
2019-11-14 15:02:44,821 send_clipboard_request id=11
2019-11-14 15:02:44,821 send_clipboard(..) elapsed=118.56, clipboard_stats=deque([6587210.636208736, 6587210.637768416, 6587210.672628874, 6587210.673715544, 6587210.701597497, 6587210.746979134, 6587210.748912778, 6587210.783537324, 6587210.789534985, 6587210.89984596, 6587210.901432897, 6587210.931105013, 6587210.932484124, 6587210.961230537, 6587210.979594865, 6587210.995990873, 6587211.035049956, 6587211.03649812, 6587211.102847814, 6587211.104236326, 6587211.155218528, 6587211.156610301, 6587211.206055389, 6587211.207461739, 6587211.221818432, 6587211.333233118, 6587211.350540022, 6587211.366796744, 6587211.407838299, 6587211.40939212, 6587211.589482759, 6587220.063509035, 6587326.246659061, 6587385.916628381, 6587385.932117268, 6587385.946659434, 6587386.005027417, 6587386.021675172, 6587386.036262228, 6587386.056455728, 6587386.072709332, 6587386.089984056, 6587386.104784679, 6587386.122864239, 6587386.137280245, 6587386.154668089, 6587386.186955213, 6587386.195545406, 6587386.196067704, 6587386.223554568, 6587386.240012909, 6587386.240585566, 6587386.254659433, 6587386.273498458, 6587386.287747217, 6587386.303896559, 6587386.322302195, 6587386.341681725, 6587386.343060277, 6587386.372964742, 6587386.404996039, 6587386.417416122, 6587386.418842505, 6587386.437608018, 6587386.469112732, 6587386.474029161, 6587386.506039652, 6587386.523083709, 6587386.538606001, 6587386.557014826, 6587386.572870551, 6587386.5877723, 6587386.606963264, 6587386.621929298, 6587386.638468064, 6587386.665733551, 6587386.66681826, 6587386.706369948, 6587386.726162128, 6587386.740685679, 6587386.756991795, 6587386.774890271, 6587386.860207167, 6587386.878480253, 6587386.903070532, 6587386.911913979, 6587386.927521305, 6587387.08598302, 6587399.540264702, 6587504.96507688], maxlen=90)
2019-11-14 15:02:44,863 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
2019-11-14 15:02:44,863 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=9
2019-11-14 15:02:44,863 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'thjirteen\'"') -> "b'thjirteen'"
2019-11-14 15:02:44,863 clipboard got contents(11, 'UTF8_STRING', 8, '"b\'thjirteen\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-11-14 15:02:44,864 got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'thjirteen\'"') pending=(<GdkX11.X11Window object at 0x7fc3a0f7d190 (GdkX11Window at 0x55ce557f32a0)>, 'GDK_SELECTION', 2292537664)
2019-11-14 15:02:44,864 setting response 'thjirteen' to property GDK_SELECTION of window 'gedit' as UTF8_STRING
2019-11-14 15:02:44,864 set_selection_response(<GdkX11.X11Window object at 0x7fc3a0f7d190 (GdkX11Window at 0x55ce557f32a0)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'thjirteen'", 2292537664)
2019-11-14 15:02:44,865 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7507', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,866 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7507', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800124', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,867 clipboard request for CLIPBOARD from window 0x800124: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:44,868 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:44,868 set_selection_response(<GdkX11.X11Window object at 0x7fc3a102ff50 (GdkX11Window at 0x55ce557f32a0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292537664)
2019-11-14 15:02:44,869 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7508', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800e11', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,870 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x7508', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0x800e11', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '2292537664'}>)
2019-11-14 15:02:44,870 clipboard request for CLIPBOARD from window 0x800e11: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-11-14 15:02:44,870 using existing TARGETS value as response: ('UTF8_STRING', 'text/plain')
2019-11-14 15:02:44,871 set_selection_response(<GdkX11.X11Window object at 0x7fc3a102ff50 (GdkX11Window at 0x55ce557c8ac0)>, TARGETS, GDK_SELECTION, ATOM, 32, "'ç\\x00\\x00\\x00\\x00\\x00\\x00\\x00·\\x01\\x00\\x00\\x00\\x00\\x00\\x00'", 2292537664)

I then added another space, and pasted with another control-v... getting 'thjirteen' again, but I'll assume those logs would just be redundant.

Rather than try any more just now, I'll just give you a chance to go through those logs and see if there's anything interesting.

comment:18 Changed 8 hours ago by Antoine Martin

Status: newassigned

This ticket is getting hard to follow, and it is about to get worse as I've just a hit a new problem, which may or may not be related.
After taking over a session, the clipboard contents remained what they were from the previous session and no amount of copying new data made any difference.
Looks like we're not claiming the clipboard?

Anyway, to make a summary of the issues above:

  • clipboard not claimed on start - should be able to fix
  • no synchronization on right click with Firefox: this is expected and won't be fixed unless Firefox offers a way to do this
  • the issue where the first control-v pastes the old contents should be fixable, but I can't reproduce it reliably enough to debug it
  • the partial sync (ie: 'irteen' instead of thjirteen'), I have not seen at all

Looks like you forgot to include the "clipboard" debugging client side.
It would be good to see if the client side sees 'irteen' anywhere.

Note: See TracTickets for help on using tickets.