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)
Sun, Nov 3, 8:14 PM
Unknown Object (File)
Oct 21 2024, 5:29 AM
Unknown Object (File)
Oct 17 2024, 8:08 PM
Unknown Object (File)
Oct 12 2024, 2:05 AM
Unknown Object (File)
Oct 1 2024, 7:32 PM
Unknown Object (File)
Sep 29 2024, 11:00 PM
Unknown Object (File)
Sep 29 2024, 6:52 PM
Unknown Object (File)
Sep 23 2024, 4:38 PM
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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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.