rsz: repair_design crashes druing global placement in hierarchical flow
Describe the bug
In hierarchical flow (OPENROAD_HIERARCHICAL=1), nangate45/bp_multi_top crashes during global placement.
Problematic designs
nangate45/bp_multi_topnangate45/black_parrot
bp_multi_top - crash log
/workspace/clean/OpenROAD-flow-scripts/flow/scripts/flow.sh 3_3_place_gp global_place
Running global_place.tcl, stage 3_3_place_gp
read_liberty ./platforms/nangate45/lib/NangateOpenCellLibrary_typical.lib
read_liberty ./platforms/nangate45/lib/fakeram45_512x64.lib
read_liberty ./platforms/nangate45/lib/fakeram45_256x96.lib
read_liberty ./platforms/nangate45/lib/fakeram45_32x64.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x7.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x15.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x96.lib
read_db -hier ./results/nangate45/bp_multi/base/3_2_place_iop.odb
[WARNING ORD-0012] Hierarchical flow (-hier) is currently in development and may cause multiple issues. Do not use in production environments.
[INFO RSZ-0026] Removed 10979 buffers.
Perform port buffering...
[INFO RSZ-0027] Inserted 701 BUF_X1 input buffers.
[INFO RSZ-0028] Inserted 612 BUF_X1 output buffers.
[INFO GPL-0022] Initialize gpl and calculate uniform density.
Placement density is 0.3260000011324883, computed from PLACE_DENSITY_LB_ADDON 0.05 and lower bound 0.2800000011920929
global_placement -density 0.3260000011324883 -pad_left 0 -pad_right 0 -routability_driven -timing_driven
[INFO GPL-0005] Execute conjugate gradient initial placement.
[INFO GPL-0002] DBU: 2000
[INFO GPL-0003] SiteSize: ( 0.190 1.400 ) um
[INFO GPL-0004] CoreBBox: ( 10.070 9.800 ) ( 1089.840 1089.200 ) um
[INFO GPL-0032] Initializing region: Top-level
[INFO GPL-0006] Number of instances: 127720
[INFO GPL-0007] Movable instances: 113001
[INFO GPL-0008] Fixed instances: 7646
[INFO GPL-0009] Dummy instances: 7073
[INFO GPL-0010] Number of nets: 132085
[INFO GPL-0011] Number of pins: 397314
[INFO GPL-0012] Die BBox: ( 0.000 0.000 ) ( 1100.000 1100.000 ) um
[INFO GPL-0013] Core BBox: ( 10.070 9.800 ) ( 1089.840 1089.200 ) um
[INFO GPL-0016] Core area: 1165503.738 um^2
[INFO GPL-0014] Region name: top-level.
[INFO GPL-0015] Region area: 1165503.738 um^2
[INFO GPL-0017] Fixed instances area: 459153.506 um^2
[INFO GPL-0018] Movable instances area: 191647.188 um^2
[INFO GPL-0019] Utilization: 27.132 %
[INFO GPL-0020] Standard cells area: 191647.188 um^2
[INFO GPL-0021] Large instances area: 0.000 um^2
[InitialPlace] Iter: 1 conjugate gradient residual: 0.00619493 HPWL: 9479702759
[InitialPlace] Iter: 2 conjugate gradient residual: 0.00041897 HPWL: 8418299493
[InitialPlace] Iter: 3 conjugate gradient residual: 0.00022328 HPWL: 7930775534
[InitialPlace] Iter: 4 conjugate gradient residual: 0.00024691 HPWL: 7496715702
[InitialPlace] Iter: 5 conjugate gradient residual: 0.00022908 HPWL: 7101344338
[InitialPlace] Iter: 6 conjugate gradient residual: 0.00017295 HPWL: 6780012973
[InitialPlace] Iter: 7 conjugate gradient residual: 0.00017400 HPWL: 6521345117
[InitialPlace] Iter: 8 conjugate gradient residual: 0.00019038 HPWL: 6309649071
[InitialPlace] Iter: 9 conjugate gradient residual: 0.00016743 HPWL: 6174716196
[InitialPlace] Iter: 10 conjugate gradient residual: 0.00008973 HPWL: 6067799135
[InitialPlace] Iter: 11 conjugate gradient residual: 0.00007481 HPWL: 5972712101
[InitialPlace] Iter: 12 conjugate gradient residual: 0.00007841 HPWL: 5915727542
[InitialPlace] Iter: 13 conjugate gradient residual: 0.00007113 HPWL: 5883610924
[InitialPlace] Iter: 14 conjugate gradient residual: 0.00004952 HPWL: 5863416225
[InitialPlace] Iter: 15 conjugate gradient residual: 0.00004361 HPWL: 5850936616
[InitialPlace] Iter: 16 conjugate gradient residual: 0.00004605 HPWL: 5841581613
[InitialPlace] Iter: 17 conjugate gradient residual: 0.00004091 HPWL: 5835553455
[InitialPlace] Iter: 18 conjugate gradient residual: 0.00004210 HPWL: 5831230246
[InitialPlace] Iter: 19 conjugate gradient residual: 0.00003354 HPWL: 5826447348
[InitialPlace] Iter: 20 conjugate gradient residual: 0.00003056 HPWL: 5821613914
[INFO GPL-0033] Initializing Nesterov region: Top-level
[INFO GPL-0023] Placement target density: 0.3260
[INFO GPL-0024] Movable insts average area: 1.696 um^2
[INFO GPL-0025] Ideal bin area: 5.202 um^2
[INFO GPL-0026] Ideal bin count: 224032
[INFO GPL-0027] Total bin area: 1165503.738 um^2
[INFO GPL-0028] Bin count (X, Y): 256 , 256
[INFO GPL-0029] Bin size (W * H): 4.218 * 4.216 um
[INFO GPL-0030] Number of bins: 65536
[INFO GPL-0007] Execute nesterov global placement.
[INFO GPL-0031] HPWL: Half-Perimeter Wirelength
Iteration | Overflow | HPWL (um) | HPWL(%) | Penalty | Group
---------------------------------------------------------------
0 | 0.9312 | 2.202136e+06 | +0.00% | 7.68e-15 |
10 | 0.8682 | 2.778397e+06 | +26.17% | 1.03e-14 |
20 | 0.8384 | 2.877640e+06 | +3.57% | 1.64e-14 |
30 | 0.8245 | 2.921236e+06 | +1.52% | 2.64e-14 |
40 | 0.8184 | 2.939500e+06 | +0.63% | 4.28e-14 |
50 | 0.8188 | 2.939144e+06 | -0.01% | 6.98e-14 |
60 | 0.8215 | 2.939618e+06 | +0.02% | 1.14e-13 |
70 | 0.8224 | 2.943508e+06 | +0.13% | 1.85e-13 |
80 | 0.8249 | 2.950075e+06 | +0.22% | 3.01e-13 |
90 | 0.8257 | 2.955449e+06 | +0.18% | 4.89e-13 |
100 | 0.8247 | 2.957504e+06 | +0.07% | 7.97e-13 |
110 | 0.8242 | 2.956829e+06 | -0.02% | 1.30e-12 |
120 | 0.8226 | 2.953977e+06 | -0.10% | 2.11e-12 |
130 | 0.8212 | 2.949700e+06 | -0.14% | 3.44e-12 |
140 | 0.8185 | 2.946673e+06 | -0.10% | 5.61e-12 |
150 | 0.8153 | 2.946169e+06 | -0.02% | 9.14e-12 |
160 | 0.8099 | 2.949267e+06 | +0.11% | 1.49e-11 |
170 | 0.8016 | 2.956150e+06 | +0.23% | 2.42e-11 |
180 | 0.7882 | 2.963884e+06 | +0.26% | 3.93e-11 |
190 | 0.7696 | 2.970276e+06 | +0.22% | 6.40e-11 |
200 | 0.7440 | 2.969277e+06 | -0.03% | 1.04e-10 |
210 | 0.7130 | 2.950313e+06 | -0.64% | 1.70e-10 |
220 | 0.6768 | 2.923744e+06 | -0.90% | 2.76e-10 |
230 | 0.6351 | 2.907154e+06 | -0.57% | 4.50e-10 |
[INFO GPL-0100] Timing-driven iteration 1/2, virtual: false.
[INFO GPL-0101] Iter: 232, overflow: 0.631, keep resizer changes at: 1, HPWL: 5812637184
Iteration | Area | Resized | Buffers | Nets repaired | Remaining
---------------------------------------------------------------------
0 | +0.0% | 0 | 0 | 0 | 132085
Signal 11 received
Stack trace:
0# 0x00005D2D01D3D1D3 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
1# 0x00007970B3645330 in /lib/x86_64-linux-gnu/libc.so.6
2# std::_Rb_tree_increment(std::_Rb_tree_node_base const*) in /lib/x86_64-linux-gnu/libstdc++.so.6
3# rsz::RepairDesign::repairDesign(double, double, double, bool, bool, int&, int&, int&, int&, int&) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
4# rsz::Resizer::findResizeSlacks(bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
5# gpl::TimingBase::executeTimingDriven(bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
6# gpl::NesterovPlace::runTimingDriven(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int&, long&, bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
7# gpl::NesterovPlace::doNesterovPlace(int) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
8# gpl::Replace::doNesterovPlace(int, gpl::PlaceOptions const&, int) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
9# replace_nesterov_place_cmd(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
10# 0x00005D2D01E24717 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
11# TclNRRunCallbacks in /lib/x86_64-linux-gnu/libtcl8.6.so
12# 0x00007970B87C46BC in /lib/x86_64-linux-gnu/libtcl8.6.so
13# Tcl_EvalEx in /lib/x86_64-linux-gnu/libtcl8.6.so
14# Tcl_Eval in /lib/x86_64-linux-gnu/libtcl8.6.so
15# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
16# 0x00005D2D01D3CAA1 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
17# Tcl_MainEx in /lib/x86_64-linux-gnu/libtcl8.6.so
18# main in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
19# 0x00007970B362A1CA in /lib/x86_64-linux-gnu/libc.so.6
20# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
21# _start in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
Command terminated by signal 11
Elapsed time: 3:09.43[h:]min:sec. CPU time: user 4402.18 sys 91.53 (2372%). Peak memory: 946160KB.
make[1]: *** [Makefile:457: do-3_3_place_gp] Error 1
make: *** [Makefile:457: results/nangate45/bp_multi/base/3_3_place_gp.odb] Error 2
Expected Behavior
No crash
Environment
-- The CXX compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-26758-g6db0147224
-- System name: Linux
-- Compiler: GNU 13.3.0
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 20
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is GNU 13.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test C_COMPILER_SUPPORTS__-Wall
-- Performing Test C_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test C_COMPILER_SUPPORTS__-x
-- Performing Test C_COMPILER_SUPPORTS__-x - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-x
-- Performing Test CXX_COMPILER_SUPPORTS__-x - Failed
-- Performing Test C_COMPILER_SUPPORTS__c++
-- Performing Test C_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__c++
-- Performing Test CXX_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17 - Success
-- Performing Test C_COMPILER_SUPPORTS__-fno-exceptions
-- Performing Test C_COMPILER_SUPPORTS__-fno-exceptions - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-fno-exceptions
-- Performing Test CXX_COMPILER_SUPPORTS__-fno-exceptions - Success
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu
-- Found SWIG: /usr/local/bin/swig (found suitable version "4.3.0", minimum required is "4.0")
-- Using SWIG >= 4.3.0 -flatstaticmethod flag for python
-- boost: 1.86.0
-- Found GTest: /usr/local/lib/cmake/GTest/GTestConfig.cmake (found version "1.13.0")
-- GTest: 1.13.0
-- Found Python3: /usr/include/python3.12 (found version "3.12.3") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.3")
-- Found Threads: TRUE
-- spdlog: 1.15.0
-- Found BISON: /usr/bin/bison (found version "3.8.2")
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.8") found components: doxygen dot
-- STA version: 2.7.0
-- STA git sha: 9c9b5659d6a7ecbe02ea1204aa89079a77db1d3e
-- System name: Linux
-- Compiler: GNU 13.3.0
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /usr/local
-- Found FLEX: /usr/bin/flex (found version "2.6.4")
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu/tclreadline.h
-- CUDD library: /usr/local/lib/libcudd.a
-- CUDD header: /usr/local/include/cudd.h
-- SSTA: 0
-- Found SWIG: /usr/local/bin/swig (found suitable version "4.3.0", minimum required is "3.0")
-- STA library: /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/libOpenSTA.a
-- STA executable: /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/sta
-- Found re2: /opt/or-tools/lib/cmake/re2/re2Config.cmake (found version "11.0.0")
-- Found Clp: /opt/or-tools/lib/cmake/Clp/ClpConfig.cmake (found version "1.17.7")
-- Found Cbc: /opt/or-tools/lib/cmake/Cbc/CbcConfig.cmake (found version "2.10.7")
-- Found SCIP: /opt/or-tools/lib/cmake/scip/scip-config.cmake (found version "9.0.0")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OR-Tools: /opt/or-tools/lib/cmake/ortools (version: 9.11.4210)
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- GUI is enabled
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS)
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found Eigen3: /usr/local/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.1")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done (4.0s)
-- Generating done (0.8s)
To Reproduce
OR (Dec 8): 6db01472242a52422a54d0f47c15ffb21011fd4d ORFS (Dec 8): edfa2befffccc1d987cfdc9df7bd2ebaf1911c37
make DESIGN_CONFIG=./designs/nangate45/bp_multi_top/config.mk OPENROAD_HIERARCHICAL=1
Relevant log output
Screenshots
No response
Additional Context
It looks like a memory corruption.
- Segmentation fault during
std::_Rb_tree_const_iteratoraccess. - Weird pointer addresses in the
_M_nodedata structure.
When I ran TSAN, no such issue occurred (global place stage finished successfully). No error report by TSAN.
ASAN & UBSAN couldn't reproduce the issue (finished successfully without crash). No ASAN/UBSAN error report.
network_->drivers() returns a cached PinSet*. But the cache can be invalidated by the repairDriver() call in the loop, which can delete the drivers memory.
Thus, the drivers should be copied before the iteration.