Actions
Bug #62395
openAsyncMessenger::wait() isn't checking for spurious condition wakeup
% Done:
0%
Source:
Tags:
backport_processed
Backport:
pacific,quincy,reef
Regression:
No
Severity:
3 - minor
Reviewed:
Description
The method wait()
of AsyncMessenger
has an ill-formed condition wait.
{
std::unique_lock locker{lock};
if (!started) {
return;
}
if (!stopped)
stop_cond.wait(locker);
}
This code works unless the kernel decides to wake up sleeping threads spuriously, which may happen according to the POSIX documentation. Specifically, this is the case when attaching a debugger to the process on the macOs.
Updated by Leonid Usov 9 months ago
- Subject changed from AsyncMessenger::wait() isn't looping over the stopped condition to AsyncMessenger::wait() isn't checking for spurious condition wakeup
Updated by Leonid Usov 9 months ago
- Related to Bug #38577: Messenger/MessengerTest.MissingServerIdenTest2/0 msg/async/AsyncMessenger.cc: 312: FAILED ceph_assert(!did_bind) added
Updated by Leonid Usov 9 months ago
- Status changed from New to Fix Under Review
- Pull request ID set to 52930
Updated by Leonid Usov 8 months ago
- Status changed from Fix Under Review to Pending Backport
Updated by Backport Bot 8 months ago
- Copied to Backport #63021: quincy: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Updated by Backport Bot 8 months ago
- Copied to Backport #63022: reef: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Updated by Backport Bot 8 months ago
- Copied to Backport #63023: pacific: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Actions