Using incorrect signal to terminate Bash shell
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
guake (Ubuntu) |
Fix Released
|
Low
|
Unassigned |
Bug Description
When the default shell is Bash (which is the default shell) Guake.delete_
Because Bash does not answer to SIGTERM this results in the Shell being killed without closing down correctly. Amongst other things this results in the Bash history file not being saved.
When the shell is Bash SIGHUP should be used.
I have investigated this after supporting a user in #ubuntu that thought that their deletion of ~/.bash_history was the reason for their Bash shell no longer saving the history. On discovering Guake was the GUI terminal emulator investigation showed it is doing:
def Guake.delete_
...
os.kill(pid, signal.SIGTERM)
"man bash" "/^SIGNALS"
When bash is interactive, in the absence of any traps, it ignores SIGTERM (so that kill 0 does not kill an interac‐
tive shell), and SIGINT is caught and handled (so that the wait builtin is interruptible). In all cases, bash
ignores SIGQUIT.
...
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all
jobs, running or stopped. Stopped jobs are sent SIGCONT to ensure that they receive the SIGHUP.
...
Changed in guake (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Low |
Changed in guake (Ubuntu): | |
status: | Triaged → In Progress |
assignee: | nobody → Filip Sohajek (filip-sohajek) |
Upstream issue:
https:/ /github. com/Guake/ guake/issues/ 353