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

IDL generated code seg faults on s390x

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.7.1
    • Affects Version/s: None
    • Component/s: None
    • None
    • Fully Compatible
    • ALL
    • Platforms 2018-01-15
    • 0

      IDL generated code seg faults only on s390x as a result of SERVER-32263.

      It appears to be a compiler bug with GCC 5.4.0. The destructor: <std::vector<mongo::write_ops::UpdateOpEntry, std::allocator<mongo::write_ops::UpdateOpEntry> >::~vector()> gets called with the wrong this pointer during exception unwind.

      This bug affects the array deserializers. The change in SERVER-32263 did not affect the generated code for array deserializers in question, but it did affect the overall parseProtected method.

      A workaround is assign the return type to a local variable:

                          self._writer.write_line('auto abc = %s;' % (array_value))
                          self._writer.write_line('values.emplace_back(abc);')
      

            Assignee:
            mark.benvenuto@mongodb.com Mark Benvenuto
            Reporter:
            mark.benvenuto@mongodb.com Mark Benvenuto
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: