(In reply to The 8472 from comment #81) > I don't know if it causes the clipboard issue but your code isn't dealing with partial writes. Though if that were the problem i'd expect the `assert(ret == mData.size());` to trigger. I moved a bit forward here. Looks like if I use the proxy, reading clipboard data through provided fd from application to compositor (the one passed by sendmsg) is not finished. If the proxy is used, compositor receives data from application but it doesn't recognize it's all and still waits for more. If app is run without proxy, fd passed by sendmsg is closed from application side (I guess) so compositor gets POLLHUP: ``` read(32, "Accept", 4194304) = 6 poll([{fd=32, events=POLLIN}], 1, 0) = 1 ([{fd=32, revents=POLLHUP}]) poll([{fd=32, events=POLLIN}], 1, -1) = 1 ([{fd=32, revents=POLLHUP}]) read(32, "", 4194298) = 0 close(32) = 0 ```
Bug 1743144 Comment 83 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
(In reply to The 8472 from comment #81) > I don't know if it causes the clipboard issue but your code isn't dealing with partial writes. Though if that were the problem i'd expect the `assert(ret == mData.size());` to trigger. I moved a bit forward here. Looks like if I use the proxy, reading clipboard data through provided fd from application to compositor (the one passed by sendmsg) is not finished. If the proxy is used, compositor receives data from application but it doesn't recognize it's all and still waits for more. If app is run without proxy, fd passed by sendmsg is closed from application side (I guess) so compositor gets POLLHUP: ``` read(32, "Accept", 4194304) = 6 poll([{fd=32, events=POLLIN}], 1, 0) = 1 ([{fd=32, revents=POLLHUP}]) poll([{fd=32, events=POLLIN}], 1, -1) = 1 ([{fd=32, revents=POLLHUP}]) read(32, "", 4194298) = 0 close(32) = 0 ``` ("Accept" string is a text data send from application to compositor).