urxvt-config-reload
urxvt-config-reload copied to clipboard
The way it intercept SIGHUP breaks screen
screen executed from urxvt with this plugin hangs on exit/detach after printing [screen is terminating] line. This happens because parent screen process doesn't receive SIGHUP sent by child screen process and thus doesn't exits.
I don't quite understand your scenario. If I run screen in urxvt, I can normally exit or detach it, no problems. Screen should not be interested in what signals urxvt is catching, nor sending signals to it. Or are you running urxvt from screen?
PR #3 fixes this issue.
I run urxvt→bash→screen. Then exit (or detach) from screen. And see [screen is terminating] without actually returning to bash prompt until I press Ctrl-\ to kill screen with SIGQUIT. It looks like sigprocmask is inherited by child processes (I didn't dig manuals deep enough to find out why this happens and is this can be somehow controlled). So, looks like both bash and screen are started with masked SIGHUP. And because of this when child screen process sends SIGHUP to parent screen process to make it exits - parent doesn't receive SIGHUP and continue waiting for SIGHUP (I've proved this by strace -ff screen).
If you can't reproduce this issue then maybe you're using different shell or bash/screen versions and one of them unmask inherited sigprocmask with SIGHUP. I'm using bash-4.3_p48 and screen-4.4.0.