Page MenuHomeFreeBSD

Don't trace threads that have interrupts disabled.
ClosedPublic

Authored by markj on Jul 31 2017, 1:12 AM.
Tags
None
Referenced Files
F149394704: D11787.id31383.diff
Tue, Mar 24, 4:15 AM
F149294280: D11787.id31383.diff
Mon, Mar 23, 1:27 PM
F149293988: D11787.id31383.diff
Mon, Mar 23, 1:24 PM
Unknown Object (File)
Fri, Mar 13, 6:02 AM
Unknown Object (File)
Fri, Mar 13, 6:00 AM
Unknown Object (File)
Mon, Mar 9, 10:05 AM
Unknown Object (File)
Sun, Mar 8, 9:29 PM
Unknown Object (File)
Fri, Mar 6, 4:44 AM
Subscribers
None

Details

Summary

The register file of such a thread is in an indeterminate state, so we
shouldn't assume that the frame pointer is valid. In particular, we may
be in the middle of restoring host registers after a vmexit.

Diff Detail

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

Event Timeline

markj added reviewers: jhb, kib.

This is fine, but then you do not need NMI.

This revision is now accepted and ready to land.Jul 31 2017, 7:20 AM
In D11787#244481, @kib wrote:

This is fine, but then you do not need NMI.

We use an NMI to avoid to avoid a deadlock: the case where the target thread holds a spinlock and thus has interrupts disabled, and is blocked on the thread lock held by the stack_save_td_running() caller.

This revision was automatically updated to reflect the committed changes.