Hey all,
I've been working on Dingus in my free time. I use it daily to load up configuration files full of environment variables to streamline my development process. It just loads a YAML file into a HashMap
and loads those into a std::process::Command
that is whatever program $SHELL
is (in my case it's the Fish shell).
Lately I've noticed panes in TMUX dying after navigating around a bit, each of these panes that die have all been running dingus
. I've only noticed this as recently, so I'm not sure if this has always been a thing or what - but luckily I've found how to reproduce the issue: Tab complete and hit control-C to close Tab completion.
Every time I do that, dingus
dies, then the parent process that spawned the dingus
subshell. I don't know a whole lot about systems level programming, but I believe this is happening because SIGINT
is being propagated upwards into the parent process. Why this is happening, I have no idea - but some googling leads me to believe that it would be worth trying to set setgpid
. The std::process::Command
builder unfortunately doesn't allow for child processes with a differing gpid
to be spawned, however, so I'm not sure how to proceed.
I think I'd like to find out how to verify that this is indeed what is happening, although I have no idea how. If it is, I'd like to figure out how to properly spawn my subshell in a manner that the child process dying due to a SIGINT
won't kill the parent. It's annoying
Any help at all would be awesome - thanks to the community for getting me into this mess