Closed korydraughn closed 2 weeks ago
From @SwooshyCueb.
... the string-related code in boost.pyhton hasn't changed in eight years, so if 1.81 is incompatible, all boost versions are incompatible. ...
Here's the line in the test which triggers the segfault.
@SwooshyCueb Please close if completed.
I'm keeping this open for now since I'm going to improve on the solution in my virtual environment PR
The work for this issue is complete and is going to be part of the 4.3.3 PREP release.
Please open a new issue that is specific to the virtual environment improvements.
[x] 4-3-stable
Bug Report
This report only applies to the following:
The following stacktrace was captured by the iRODS server during testing of 4.3.3. The test which triggered the stacktrace is
test_icp.Test_Icp.test_multithreaded_icp__issue_5478
. It has been observed that the stacktrace is triggered 100% of the time.After more investigation, the segfault points to the construction of a
boost::python::str
. This is captured in the original stacktrace. The segfault happens here: https://github.com/irods/irods_rule_engine_plugin_python/blob/6c040ef60494e3a1ab8775f4135bbd701e78e647/src/main.cpp#L467"core"
results in the implicit construction of aboost::python::str
.After even more experiments, it turns out that the segfault only occurs when multiple threads are in use (i.e. legacy parallel transfer). If threading is disabled (i.e.
iput -N0
), everything works - no segfault occurs.The segfault can be reproduced outside of iRODS using the following program.
Here is the script I used to compile it.