Invalid access to empty boost::optional in multiSyncApply_noAbort()

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Duplicate
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Replication, Storage
    • None
    • ALL
    • 0
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      In multiSyncApply_noAbort(), OplogEntryBase::getTerm() returns a boost::optional, which isn't initialized in PV0, so calling get() on it is invalid.

                      // Populate the "t" (term) field with an array of all the grouped inserts' terms.
                      BSONArrayBuilder tArrayBuilder(groupedInsertBuilder.subarrayStart("t"));
                      for (auto groupingIterator = oplogEntriesIterator;
                           groupingIterator != endOfGroupableOpsIterator;
                           ++groupingIterator) {
                          tArrayBuilder.append(
                              static_cast<long long>((*groupingIterator)->getTerm().get()));
                      }
                      tArrayBuilder.done();
      

            Assignee:
            Eric Milkie
            Reporter:
            Siyuan Zhou
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: