[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-man
Subject:    prctl() PR_SET_PDEATHSIG race condition note
From:       Georg Sauthoff <mail () georg ! so>
Date:       2016-04-29 19:06:06
Message-ID: 20160429190606.GA30805 () dell12 ! lru ! li
[Download RAW message or body]

Hello,

regarding the PR_SET_PDEATHSIG paragraph in prctl(2):

> PR_SET_PDEATHSIG (since Linux 2.1.57)
>       Set the parent death signal of the calling process to arg2
>       (either a signal value in the range 1..maxsig, or 0 to clear).
>       This is the signal that the calling process will get when its
>       parent dies.  This value is cleared for the child of a fork(2)
>       and (since Linux 2.4.36 / 2.6.23) when executing a set-user-ID
>       or set-group-ID binary, or a binary that has associated
>       capabilities (see capabilities(7)).  This value is preserved
>       across execve(2).
>
>       Warning: the "parent" in this case is considered to be the
>       thread that created this process.  In other words, the signal
>       will be sent when that thread terminates (via, for example,
>       pthread_exit(3)), rather than after all of the threads in the
>       parent process terminate.

Perhaps it makes sense to add a note regarding a race condition
between the child being able to call prctl() and an early exit of
the parent process (after a successful fork()); i.e. when the
parent death signal is installed after the parent has already
died.

See for example following links that may indicate that this isn't
necessarily obvious:

- http://lkml.iu.edu/hypermail/linux/kernel/0003.1/0769.html
- http://stackoverflow.com/a/284443/427158

If you like you can include a code snippet how to use
prctl(PR_SET_PDEATHSIGH, ) race condition free, cf. the snippets
I've included in my answer on SO:
http://stackoverflow.com/a/36945270/427158


Best regards
Georg
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic