Project

General

Profile

Actions

Bug #62395

closed

AsyncMessenger::wait() isn't checking for spurious condition wakeup

Added by Leonid Usov over 2 years ago. Updated 8 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
msgr
Target version:
-
% Done:

0%

Source:
Backport:
pacific,quincy,reef
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Tags (freeform):
Fixed In:
v18.0.0-6412-g4fbb4acab44
Released In:
v19.2.0~1535
Upkeep Timestamp:
2025-07-12T02:45:38+00:00

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.


Related issues 4 (0 open4 closed)

Related to Messengers - Bug #38577: Messenger/MessengerTest.MissingServerIdenTest2/0 msg/async/AsyncMessenger.cc: 312: FAILED ceph_assert(!did_bind)Resolved

Actions
Copied to Ceph - Backport #63021: quincy: AsyncMessenger::wait() isn't checking for spurious condition wakeupResolvedLeonid UsovActions
Copied to Ceph - Backport #63022: reef: AsyncMessenger::wait() isn't checking for spurious condition wakeupResolvedLeonid UsovActions
Copied to Ceph - Backport #63023: pacific: AsyncMessenger::wait() isn't checking for spurious condition wakeupResolvedLeonid UsovActions
Actions #1

Updated by Leonid Usov over 2 years ago

  • Subject changed from AsyncMessenger::wait() isn't looping over the stopped condition to AsyncMessenger::wait() isn't checking for spurious condition wakeup
Actions #2

Updated by Leonid Usov over 2 years ago

  • Related to Bug #38577: Messenger/MessengerTest.MissingServerIdenTest2/0 msg/async/AsyncMessenger.cc: 312: FAILED ceph_assert(!did_bind) added
Actions #3

Updated by Leonid Usov over 2 years ago

  • Status changed from New to Fix Under Review
  • Pull request ID set to 52930
Actions #4

Updated by Ilya Dryomov over 2 years ago

  • Backport set to pacific,quincy,reef
Actions #5

Updated by Leonid Usov over 2 years ago

  • Status changed from Fix Under Review to Pending Backport
Actions #6

Updated by Upkeep Bot over 2 years ago

  • Copied to Backport #63021: quincy: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Actions #7

Updated by Upkeep Bot over 2 years ago

  • Copied to Backport #63022: reef: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Actions #8

Updated by Upkeep Bot over 2 years ago

  • Copied to Backport #63023: pacific: AsyncMessenger::wait() isn't checking for spurious condition wakeup added
Actions #13

Updated by Leonid Usov almost 2 years ago

  • Status changed from Pending Backport to Resolved
Actions #14

Updated by Upkeep Bot 8 months ago

  • Merge Commit set to 4fbb4acab4492574a122d209fa14b8ff8494de88
  • Fixed In set to v18.0.0-6412-g4fbb4acab44
  • Released In set to v19.2.0~1535
  • Upkeep Timestamp set to 2025-07-12T02:45:38+00:00
Actions

Also available in: Atom PDF