-
-
Notifications
You must be signed in to change notification settings - Fork 704
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Xwayland apps on wayland #5101
Comments
@tych0 I think this is caused by removing the double fork. I get the following error |
Ah man, that is... unfortunate. I don't think it's double fork, but our SIGCHLD handler, based on: https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/871646d22522141c45db2c0bfa1528d595bb69df the wlroots library wants to fork (which seems slightly impolite) an X server. When its waitpid() races with our SIGCHLD handler, it fails. I think if wlroots really wants to do this, they should mask off the SIGCHLD handler while they're doing their own thing. Probably we should send them a patch, but in the meantime, we can manage it ourselves. Does: tych0@dbe76e9 work? If not, we'll have to do something like what the patch you linked did (or maybe pywlroots should, like I mention flacjacket/pywlroots#207 ?). But really wlroots proper should do that. I don't have enough wayland-fu to be building my own wayland stuff to test patches, though. |
Your patch works for me. Would be good to get @jwijenbergh thoughts here too as he's more familiar with the wlroots stuff. |
the wayland backend via wlroots wants to double fork an X server for XWayland, and expects to waitpid() on the middle fork to make sure things were successful. our SIGCHLD handler races with this process and interferes, causing things like: waitpid for Xwayland fork failed: No child processes let's delay installing our SIGCHLD handler until after XWayland is initialized to hopefully dodge this error. Fixes qtile#5101 Signed-off-by: Tycho Andersen <[email protected]>
Ok, thanks for confirming. Happy to wait for @jwijenbergh's review, although I am reasonably confident that's the right fix given the implementations you linked to. I will have a think about how wlroots can really handle this. it feels like double |
the wayland backend via wlroots wants to double fork an X server for XWayland, and expects to waitpid() on the middle fork to make sure things were successful. our SIGCHLD handler races with this process and interferes, causing things like: waitpid for Xwayland fork failed: No child processes let's delay installing our SIGCHLD handler until after XWayland is initialized to hopefully dodge this error. Fixes qtile#5101 Signed-off-by: Tycho Andersen <[email protected]>
It turns out they already do some pipe-notify thing for xwayland, and so this waitpid() is just about zombie prevention, so I think we can safely ignore it. I sent them a patch: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4926 If they merge it, then once we move to that wlroots version, we can revert my fix. |
I've merged your fix for now as it solves a real issue for some users. We can revert and implement a different fix if necessary later. |
Issue description
First I discovered this issue when turning on Steam, later discovered that none Xwayland app works, even after running in terminal I get no output about error. This is all I got:
Version
0.29.0+1dacffb.flake
Backend
Wayland (experimental)
Config
Logs
qtile.log
Required
The text was updated successfully, but these errors were encountered: