Skip to content

Commit 618ee92

Browse files
committed
Further-enforce lockordering by enforcing directly after TRY_LOCKs
1 parent 2a962d4 commit 618ee92

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

src/sync.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -110,21 +110,19 @@ static void push_lock(void* c, const CLockLocation& locklocation, bool fTry)
110110

111111
(*lockstack).push_back(std::make_pair(c, locklocation));
112112

113-
if (!fTry) {
114-
BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, (*lockstack)) {
115-
if (i.first == c)
116-
break;
117-
118-
std::pair<void*, void*> p1 = std::make_pair(i.first, c);
119-
if (lockdata.lockorders.count(p1))
120-
continue;
121-
lockdata.lockorders[p1] = (*lockstack);
122-
123-
std::pair<void*, void*> p2 = std::make_pair(c, i.first);
124-
lockdata.invlockorders.insert(p2);
125-
if (lockdata.lockorders.count(p2))
126-
potential_deadlock_detected(p1, lockdata.lockorders[p2], lockdata.lockorders[p1]);
127-
}
113+
BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, (*lockstack)) {
114+
if (i.first == c)
115+
break;
116+
117+
std::pair<void*, void*> p1 = std::make_pair(i.first, c);
118+
if (lockdata.lockorders.count(p1))
119+
continue;
120+
lockdata.lockorders[p1] = (*lockstack);
121+
122+
std::pair<void*, void*> p2 = std::make_pair(c, i.first);
123+
lockdata.invlockorders.insert(p2);
124+
if (lockdata.lockorders.count(p2))
125+
potential_deadlock_detected(p1, lockdata.lockorders[p2], lockdata.lockorders[p1]);
128126
}
129127
}
130128

0 commit comments

Comments
 (0)