Segfault with Boost => 1.69 #1506
Labels
I: No breaking change
Previously written code will work as before, no one should note anything changing (aside the fix)
S: High
Should be handled next
T: Bug
Wrong statements in the code or documentation
We (@jarsi, @jasperalbers) see consistent segmentation faults when sorting presynaptic connections using Boost =>1.69 (no segfault with v1.68, but versions 1.69 and 1.70 are seemingly incompatible) on multiple HPC systems (JURECA and DEEP-EST), running a variety of cases (HPC benchmark, microcircuit, multi-area model). It is necessary to confirm the issue on other systems with Boost => 1.69.
In
libnestutil/sort.h
,sort( BlockVector< T1 >& vec_sort, BlockVector< T2 >& vec_perm )
is confirmed to contain the problematic code:
boost::sort::spreadsort::integer_sort( make_iterator_pair( vec_sort.begin(), vec_perm.begin() ), make_iterator_pair( vec_sort.end(), vec_perm.end() ), rightshift_iterator_pair() );
.Forcing
quicksort3way()
, even ifHAVE_BOOST
is defined, i.e. always usingquicksort3way( vec_sort, vec_perm, 0, vec_sort.size() - 1 );
,resolves the issue; this change only serves to confirm the issue. We believe the problem to be caused by changes in Boost >1.68 which have introduced some incompatibility, most likely in:
boost/sort/spreadsort/spreadsort.hpp
boost/iterator/iterator_adaptor.hpp
boost/tuple/tuple.hpp
Recommendations: since NEST seems to only make use of Boost here, we suggest to drop Boost completely and replicate the desired functionality. Reasons:
The text was updated successfully, but these errors were encountered: