Page MenuHomeFreeBSD

don't stop in issignal() if P_SINGLE_EXIT is set
ClosedPublic

Authored by badger on Mar 5 2017, 1:57 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Dec 11, 11:48 PM
Unknown Object (File)
Mon, Dec 9, 7:08 AM
Unknown Object (File)
Fri, Nov 29, 2:59 PM
Unknown Object (File)
Fri, Nov 29, 3:15 AM
Unknown Object (File)
Tue, Nov 26, 6:25 PM
Unknown Object (File)
Sun, Nov 24, 11:10 PM
Unknown Object (File)
Nov 3 2024, 8:14 PM
Unknown Object (File)
Oct 21 2024, 5:29 AM
Subscribers

Details

Summary

Suppose a traced process is stopped in ptracestop() due to receipt of a
SIGSTOP signal, and is awaiting orders from the tracing process on how
to handle the signal. Before sending any such orders, the tracing
process exits. This should kill the traced process. But suppose a second
thread handles the SIGKILL and proceeds to exit1(), calling
thread_single(). The first thread will now awaken and will have a chance
to check once more if it should go to sleep due to the SIGSTOP. It must
not sleep after P_SINGLE_EXIT has been set; this would prevent the
SIGKILL from taking effect, leaving a stopped orphan behind after the
tracing process dies.

Also add new tests for this condition.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 7903
Build 8043: arc lint + arc unit

Event Timeline

badger retitled this revision from to don't stop in issignal() if P_SINGLE_EXIT is set.
badger updated this object.
badger edited the test plan for this revision. (Show Details)
badger added a reviewer: kib.
kib edited edge metadata.
This revision is now accepted and ready to land.Mar 5 2017, 11:26 AM
This revision was automatically updated to reflect the committed changes.