Skip to main content

overlapping_acquisitions

Function overlapping_acquisitions 

Source
pub fn overlapping_acquisitions(src: &str) -> Vec<Overlap>
Expand description

Find every place src takes a lock while holding another.

Deliberately simple and line-based: it tracks let … = self.FIELD.lock_safe() bindings and looks for a different self.OTHER.lock_safe() before the binding goes out of scope or is explicitly dropped. A guard that is not bound to a name (*self.flag.lock_safe() = false;) is released at the end of its statement and cannot overlap anything, so it is only ever an inner acquisition here.

TRACES: UR-005 | DR-052 | UT-052