Closed shizonic closed 6 years ago
Which window manager are you using? I can't replicate this using simple clients such as xterm and termite (libvte) or window managers like i3, spectrwm, or ratpoison.
I am using wmfs (https://github.com/xorg62/wmfs) and I use the recommended quit function ...
It seems to work as expected here when using sx ./wmfs -C wmfsrc
and quitting with C-M-q
.
Are you perhaps using an sxrc
? If so, the trouble might be there.
Edit1: Although this is triggering a segfault in wmfs when it exits, so there's very likely a bug there too.
Edit2: More oddities. It seems like the process wmfs itself doesn't respond to a SIGTERM
when provided from a different tty but it will segfault when I attempt to switch back to the wmfs.
Here's a partial backtrace that I could get:
#0 0x00007f83e6b3da5b in ?? () from /usr/lib/libX11.so.6
#1 0x00007f83e6b3e295 in _XFlush () from /usr/lib/libX11.so.6
#2 0x00007f83e6b40e25 in _XGetRequest () from /usr/lib/libX11.so.6
#3 0x00007f83e6b39fcb in XSync () from /usr/lib/libX11.so.6
#4 0x00007f83e6b1bb7e in XCloseDisplay () from /usr/lib/libX11.so.6
#5 0x0000556edb17b911 in main ()
@xorg62: Any ideas what may be causing this or how to provide more useful information?
Thanks for your reply !
Yes I Am using a sxrc file.
So you think I should report a bug to him ?
Yes, this does seem to be an issue with wmfs itself. However you should still be returned to the tty when wmfs crashes, at least that is what happens for me on both intel modesetting and nvidia based systems.
Thank you! Just created an issue for him: https://github.com/xorg62/wmfs/issues/99
Would you mind posting your sxrc
regardless?
Of course!
#!/bin/sh
exec 1>&2 2>/dev/null
userresources="${HOME}/.Xresources"
usermodmap="${HOME}/.Xmodmap"
sysresources="/etc/X11/xinit/.Xresources"
sysmodmap="/etc/X11/xinit/.Xmodmap"
customxresources="${HOME}/.Xdefaults"
(
# merge in defaults and keymaps
if [ -f "${sysresources}" ]; then
xrdb -merge "${sysresources}" &
fi
if [ -f "${sysmodmap}" ]; then
xmodmap "${sysmodmap}" &
fi
if [ -f "${userresources}" ]; then
xrdb -merge "${userresources}" &
fi
if [ -f "${usermodmap}" ]; then
xmodmap "${usermodmap}" &
fi
if [ -f "${customxresources}" ]; then
xrdb -merge "${customxresources}" &
fi
# disable pc speaker
xset b off &
# set keyboard map
setxkbmap -layout ch -variant de &
# swap super alt keys if we are at home
if [ -z "${ENV_WORK}" ]; then
setxkbmap -option altwin:swap_lalt_lwin &
fi
# keyboard settings - 250 ms delay and 25 cps (characters per second) repeat rate.
xset r rate 250 25 &
# configure touchpad
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Tapping Enabled" 1 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Tapping Drag Enabled" 1 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Tapping Enabled" 1 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Horizontal Scroll Enabled" 1 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Disable While Typing Enabled" 1 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Drag Lock Buttons" 0 &
xinput set-prop "DLL082A:01 06CB:76AF Touchpad" "libinput Accel Speed" 1 &
# start terminal daemon
${HOME}/.config/urxvt/launch &
) 1>&2 2>/dev/null
# start wm
if [ ! "x${EXEC_WM}" = "x" ]; then
if [ ! -f "${HOME}/.config/${EXEC_WM}/launch" ]; then
echo "error: launch file for ${EXEC_WM} does not exist"
fi
else
echo "error: environment variable EXEC_WM not set"
fi
exec ${HOME}/.config/${EXEC_WM}/launch
Hm, unfortunately I can't seem to replicate the issue after using some of the key features of your file. Since you're calling these launch
scripts, can you post one of those?
I wonder if because you're spawning children such as urxvt/launch &
and not cleaning them up that might be causing issues.
Thank you ! Maybe I don't understand enough about it. So do you think if I would kill every spawning process would solve it ?
Btw.: Here is the wmfs launch script:
#!/bin/sh
pkill -x wmfs
while pgrep -x wmfs >/dev/null; do sleep 1; done
${HOME}/.config/mons/launch > ~/.local/var/log/mons.log 2>&1
(
${HOME}/.config/compton/launch &
${HOME}/.config/wmfs/scripts/status.sh > /dev/null 2>&1 &
${HOME}/.config/dunst/launch &
${HOME}/.config/Thunar/launch &
${HOME}/.config/xautolock/launch &
blueman-applet &
) >/dev/null 2>&1
exec wmfs
Any other launch script looks corresponding ...
EDIT: But why does it work if I use xinit?
May the latest commit (https://github.com/xorg62/wmfs/commit/45b558475e2efc734a400573749d79e9a03a9bf4) to wmfs solve it?
xinit goes to greater lengths to terminate the server if it is taking awhile to end but it's not the kind of behaviour I want sx to have.
The commit you mention does solve the problem of segfaulting which is nice.
I'm not sure if it'll help your case though. The scripts are hard to follow due to all the redirections and subshell usage, but I'd suggest testing a simple case first such as sx wmfs
and building it up to your current requirements to identify the problem.
At least one problem is solved. :)
Thank you for support and help. I will do it like you said: Step by step from the ground up. :) Will also report...
I am not sure if the latest wmfs commit (https://github.com/xorg62/wmfs/commit/2d608711d2a6562107173efab26e7aed7eed6960) fixed the issue or if it is because I changed some configs. Nevermind it works now without any issues. :) Thanks again for your work and help!
Ah, good to hear. I don't have to change anything \o/
No you don't. :) Is it possible that your solution is much more performant than xinit? It feels snappier...
Unlikely, there probably isn't much difference compared to xinit.
Okay. So maybe I just did imagine the better performance ;)
If I leave my window manager the Xorg still runs and does not shutdown. I have to switch to tty2 and kill it. How can I solve this?