-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
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);')
- is related to
-
SERVER-33125 Segfault caused by apparent error in codegen for exception unwinding on s390x
- Closed
-
SERVER-34873 Fix problems caused by unwind handling on Z Series.
- Closed
- related to
-
SERVER-32467 Remove s390x compiler workaround
- Closed