Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-12237

Off-by-one comparison in checkForInterruptFail fail point

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Trivial - P5 Trivial - P5
    • None
    • None
    • Testing Infrastructure
    • ALL

    Description

      This seems extremely minor, but I believe the checkForInterruptFail fail point (introduced in SERVER-11695) can incorrectly fail when chance is set to 0 and the random number also happens to be 0:

      https://github.com/mongodb/mongo/blob/419be507ff3ccafd1a5dcda9a40144ed6fb4901e/src/mongo/db/kill_current_op.cpp#L155-L161

      double next = static_cast<double>(std::abs(checkForInterruptPRNG.nextInt64()));
      double upperBound =
          std::numeric_limits<int64_t>::max() * failPointInfo["chance"].numberDouble();
      if (next > upperBound) {
          return false;
      }
      return true;

      I would expect chance: 0 to never reach the return true statement.


      Version:
      419be507ff3ccafd1a5dcda9a40144ed6fb4901e

      Attachments

        Activity

          People

            rassi J Rassi
            kamran.khan Kamran K.
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: