My process was killed but I cannot understand the kernel notice
SAK in this case really means Secure Attention Key. The message you are seeing is a kernel message defined in drivers/tty/tty_io.c. SAK is a key combination which ensures secure login for a user on console. On Linux SAK ensures this by killing all processes attached to the terminal SAK is invoked on. It is expected that init
will then restart the trusted login process like getty
followed by login
or X server with display manager.
The listed PIDs are indeed PIDs of threads of your application CX_SC3
which were killed by SAK.
fd#n opened to the tty
means that the process/thread which was killed had the file descriptor n
opened to the terminal on which the SAK was invoked.
In Linux there are two ways of invoking SAK:
Through the magic SysRq key - typically Alt+SysRq+K (virtual terminal) or BreakK (serial console). This is not your case as you already tried to disable the magic SysRq by
echo 0 > /proc/sys/kernel/sysrq
and sending the BreakK sequence by accident is improbable.Through a defined key sequence (virtual terminal) or the break signal (serial console). SAK availability on a serial console is controlled by
setserial
.
Break signal on a serial line is continuous sending of spacing values over a time longer than the character sending time (including start, stop and parity bits). In you case it is highly probable that the condition of the Break signal appears during shutting your host machine down. Please try to turn the SAK off on your serial port on the target device by setserial
:
setserial /dev/ttyS0 ^sak
You can check the SAK functionality status on the serial port by setserial -g /dev/ttyS0
. When turned on it will show SAK
after Flags:
. For automatic setting of the option after boot see the startup scripts which on BusyBox systems are usually /etc/init.d/rcS
and /etc/rc.d/S*
or check /etc/inittab
for other possibilities.
I managed to resolve the issue with the help of pabouk's answer. The code based solution that I finally discovered which allows the SAK
flag to be set/unset on the serial port when opening using userspace API can be found on stackoverflow here How can I disable the serial port SAK option on Linux using userspace API?