help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-bash] readline does not always handle SIGTERM on reboot


From: Chet Ramey
Subject: Re: [Help-bash] readline does not always handle SIGTERM on reboot
Date: Fri, 6 Apr 2018 09:47:20 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 4/6/18 9:11 AM, john smith wrote:
> Hello,
> 
> I'm using bash 4.4.18 with busybox.  When reboot is done SIGTERM is
> sent to all processes by busybox init.  The problem is that while
> SIGTERM is always handled by sigterm_sighandler() in bash at reboot
> it's not always handled by rl_getc().  I did 10 attempts and SIGTERM
> has been not handled by rl_getc() in 8 cases.  It's problematic
> because rl_get() returns EOF on SIGTERM and it makes bash perform
> logout and save history.
> 
> When I start a new session via telnet and kill a previously started
> bash session opened on serial console I can see that SIGTERM is
> handled in rl_getc() every time.
> 
> What can be the reson rl_getc() does not handle SIGTERM on reboot?

What does `handled' mean? If readline's signal handlers are installed,
the SIGTERM signal handler sets a flag.  If the SIGTERM doesn't interrupt
read, nothing else happens until the read returns. If it does interrupt the
read, and readline is reading a command, it returns EOF. If it's not (for
instance, if it's reading an incremental search string), it returns an
error to allow the  command to deal with it. The public interface that the
rest of readline  uses (rl_read_key) checks for signal receipt and calls
the signal handler immediately after rl_getc returns.

There's no difference in how readline and bash handle signals between
receiving them from init and from another process.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    address@hidden    http://tiswww.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]