This repository was archived by the owner on Mar 28, 2020. It is now read-only.
[swift-4.0-brach] TSan: Don't save stack in ThreadIgnoreBegin to avoid a deadlock when forking #10
+4
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a backport of a small part of r298809 which fixes a possible deadlock that happens on macOS when we fork to spawn the symbolizer. After fork(), we use login_tty, which in turn calls ioctl, which we have an interceptor for. Even when ignores are active, the interceptor will still access the stack depot and lock/unlock a spinlock via CurrentStackId(). We could have forked in a "bad state", when this spinlock was held by another thread. This fix just stops calling CurrentStackId from ScopedInterceptor's constructor, because it's not really necessary.
rdar://problem/31521889