mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-26 14:16:12 +00:00
[ORC] Lock ThreadSafeContext during module destruction in ThreadSafeModule's
move constructor. This is basically the same fix as r343261, but applied to the move constructor: Failure to lock the context during module destruction can lead to data races if other threads are operating on the context. llvm-svn: 343286
This commit is contained in:
parent
e624e3add2
commit
1accc97014
@ -93,6 +93,12 @@ public:
|
||||
// reverse order (i.e. module first) to ensure the dependencies are
|
||||
// protected: The old module that is being overwritten must be destroyed
|
||||
// *before* the context that it depends on.
|
||||
// We also need to lock the context to make sure the module tear-down
|
||||
// does not overlap any other work on the context.
|
||||
if (M) {
|
||||
auto L = getContextLock();
|
||||
M = nullptr;
|
||||
}
|
||||
M = std::move(Other.M);
|
||||
TSCtx = std::move(Other.TSCtx);
|
||||
return *this;
|
||||
|
Loading…
x
Reference in New Issue
Block a user