D5547: Prevent kcheckpass from becoming an orphan
Martin Gräßlin
noreply at phabricator.kde.org
Sun Apr 23 08:35:57 UTC 2017
graesslin created this revision.
Restricted Application added a project: Plasma.
Restricted Application added a subscriber: plasma-devel.
REVISION SUMMARY
With the long running kcheckpass there is the possibility that
kcheckpass becomes an orphan. Kcheckpass terminates once it gets
SIGUSR2 sent from the parent process (that is kscreenlocker_greet).
If kscreenlocker_greet crashes it cannot send SIGUSR2 to kcheckpass and
thus kcheckpass becomes an orphan. This can easily be seen in the
killTest autotest which results in many orphaned kcheckpass processes
after execution.
This change uses the linux specific PR_SET_PDEATHSIG to send SIGUSR2 to
kcheckpass when the parent process dies. Thus kcheckpass can get out of
the waiting and terminate without becoming an orphan.
In this case it is not a problem to use a linux specific syscall. The
long running kcheckpass is only used if kscreenlocker is built with
seccomp support which is also linux specific.
TEST PLAN
Run killTest and check the number of orphaned kcheckpass.
Without this change we had 17 orphaned processes, with this change none.
REPOSITORY
R133 KScreenLocker
BRANCH
kcheckpass-no-orphan
REVISION DETAIL
https://phabricator.kde.org/D5547
AFFECTED FILES
kcheckpass/kcheckpass.c
To: graesslin, #plasma
Cc: plasma-devel, spstarr, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170423/a4caa12e/attachment.html>
More information about the Plasma-devel
mailing list