Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data races in gpl module #6185

Open
eszpotanski opened this issue Nov 18, 2024 · 0 comments
Open

Data races in gpl module #6185

eszpotanski opened this issue Nov 18, 2024 · 0 comments
Assignees
Labels
gpl Global Placement

Comments

@eszpotanski
Copy link
Contributor

Describe the bug

When running 3_1_place_gp_skip_io and 3_1_place_gp stages for Ibex, ThreadSanitizer detects a few data races, usually in gpl::GNet, gpl::GPin and gpl::NesterovBase.

Expected Behavior

Successful run without data races

Environment

[WARNING] Your current OpenROAD version is outdated.
It is recommened to pull the latest changes.
If problem persists, file a github issue with the re-producible test case.
kernel: Linux 6.11.5-arch1-1
os: Arch Linux
cmake version 3.30.5
-- The CXX compiler identification is GNU 14.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-17013-gf7f634f88
-- System name: Linux
-- Compiler: GNU 14.2.1
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is GNU 14.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - 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
-- PerformingCMake Warning (dev) at src/CMakeLists.txt:175 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning at src/CMakeLists.txt:267 (message):
  spdlog: SPDLOG_FMT_EXTERNAL=ON


CMake Warning (dev) at src/dpl/CMakeLists.txt:41 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/cts/CMakeLists.txt:36 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/drt/CMakeLists.txt:49 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/utl/CMakeLists.txt:38 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

 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 - Success
-- 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__-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__-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
-- TCL library: /usr/lib/libtcl.so
-- TCL header: /usr/include/tcl.h
-- TCL readline library: /usr/lib/libtclreadline.so
-- TCL readline header: /usr/include
-- Found SWIG: /usr/bin/swig (found suitable version "4.2.1", minimum required is "4.0")
-- Using SWIG >= 4.2.1 -flatstaticmethod flag for python
-- Found Boost: /usr/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- boost: 1.86.0
-- Found GTest: /usr/lib/cmake/GTest/GTestConfig.cmake (found version "1.15.2")
-- GTest: 1.15.2
-- Found Python3: /usr/include/python3.12 (found version "3.12.7") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib/libz.so (found version "1.3.1")
-- Found Threads: TRUE
-- spdlog: 1.14.1
-- Found BISON: /usr/bin/bison (found version "3.8.2")
-- Found Doxygen: /usr/bin/doxygen (found version "1.12.0") found components: doxygen dot
-- STA version: 2.6.0
-- STA git sha: aa598a2f14c5c142e90391a69988523505e7db3d
-- System name: Linux
-- Compiler: GNU 14.2.1
-- 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/libtcl.so
-- TCL header: /usr/include/tcl.h
-- TCL readline library: /usr/lib/libtclreadline.so
-- TCL readline header: /usr/include/tclreadline.h
-- CUDD library: /usr/local/lib/libcudd.a
-- CUDD header: /usr/local/include/cudd.h
-- SSTA: 0
-- Found SWIG: /usr/bin/swig (found suitable version "4.2.1", minimum required is "3.0")
-- STA executable: /home/ARCHIVE/OPENROAD/google-openroad-flow-scripts/tools/OpenROAD/src/sta/app/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/libtcl.so
-- TCL header: /usr/include/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
-- Charts widget is not enabled
-- Found Boost: /usr/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS)
-- Found Boost: /usr/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found suitable version "1.86.0", minimum required is "1.78")
-- TCL library: /usr/lib/libtcCMake Warning (dev) at src/dst/CMakeLists.txt:42 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/dft/test/CMakeLists.txt:18 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

Number of processor cores: 16
l.so
-- TCL header: /usr/include/tcl.h
-- Found Boost: /usr/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization system thread
-- Found Boost: /usr/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- Found Eigen3: /usr/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done (9.5s)
-- Generating done (0.8s)
-- Build files have been written to: /tmp/tmp.pvRoKTV8Mz

To Reproduce

Default flow with ASAP7 Ibex used. Data races can be reproduced with:

  • Run placement for Ibex, just to prepare dependencies - DESIGN_CONFIG=designs/asap7/ibex/config.mk make place (from OpenROAD-flow-scripts/flow)
  • Rebuild OpenROAD with TSAN option - ./build_openroad.sh --local --openroad-args " -DTSAN=ON " (from OpenROAD-flow-scripts)
  • Run 3_1_place_gp_skip_io or 3_3_place_gp for Ibex - DESIGN_CONFIG=designs/asap7/ibex/config.mk make do-3_1_place_gp_skip_io or DESIGN_CONFIG=designs/asap7/ibex/config.mk make do-3_3_place_gp (from OpenROAD-flow-scripts/flow)

Relevant log output

==================
WARNING: ThreadSanitizer: data race (pid=51846)
  Read of size 8 at 0x7b600006e6c0 by thread T22:
    #0 gpl::FloatPoint::FloatPoint(float, float) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/point.h:44 (openroad+0xdfccc9)
    #1 gpl::NesterovBase::initDensity1() [clone ._omp_fn.0] /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1862 (openroad+0xdfccc9)
    #2 <null> <null> (libgomp.so.1+0x1cd8d)

  Previous write of size 8 at 0x7b600006e6c0 by main thread:
    #0 std::vector<gpl::FloatPoint, std::allocator<gpl::FloatPoint> >::_M_fill_insert(__gnu_cxx::__normal_iterator<gpl::FloatPoint*, std::vector<gpl::FloatPoint, std::allocator<gpl::FloatPoint> > >, unsigned long, gpl::FloatPoint const&) /usr/include/c++/12/bits/vector.tcc:616 (openroad+0xe11040)
    #1 std::vector<gpl::FloatPoint, std::allocator<gpl::FloatPoint> >::resize(unsigned long, gpl::FloatPoint const&) /usr/include/c++/12/bits/stl_vector.h:1032 (openroad+0xdf684b)
    #2 gpl::NesterovBase::initDensity1() /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1854 (openroad+0xdf684b)
    #3 gpl::NesterovPlace::init() /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovPlace.cpp:217 (openroad+0xdcf833)
    #4 gpl::NesterovPlace::NesterovPlace(gpl::NesterovPlaceVars const&, std::shared_ptr<gpl::PlacerBaseCommon> const&, std::shared_ptr<gpl::NesterovBaseCommon> const&, std::vector<std::shared_ptr<gpl::PlacerBase>, std::allocator<std::shared_ptr<gpl::PlacerBase> > >&, std::vector<std::shared_ptr<gpl::NesterovBase>, std::allocator<std::shared_ptr<gpl::NesterovBase> > >&, std::shared_ptr<gpl::RouteBase>, std::shared_ptr<gpl::TimingBase>, utl::Logger*) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovPlace.cpp:84 (openroad+0xdd1002)
    #5 gpl::Replace::initNesterovPlace(int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/replace.cpp:364 (openroad+0xdc061a)
    #6 gpl::Replace::getUniformTargetDensity(int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/replace.cpp:442 (openroad+0xdc5260)
    #7 get_global_placement_uniform_density_cmd() /OpenROAD-flow-scripts/tools/OpenROAD/build/src/gpl/CMakeFiles/gpl.dir/replaceTCL_wrap.cxx:2015 (openroad+0xe959ed)
    #8 _wrap_get_global_placement_uniform_density_cmd /OpenROAD-flow-scripts/tools/OpenROAD/build/src/gpl/CMakeFiles/gpl.dir/replaceTCL_wrap.cxx:3322 (openroad+0xe95a49)
    #9 TclNRRunCallbacks <null> (libtcl8.6.so+0x420c7)
    #10 tclAppInit /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:507 (openroad+0xd0ce43)
    #11 ord::tclInit(Tcl_Interp*) /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:550 (openroad+0xd0d9ae)
    #12 ord::tclAppInit(Tcl_Interp*) /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:545 (openroad+0xd0d9ae)
    #13 Tcl_MainEx <null> (libtcl8.6.so+0x108aa0)
    #14 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 (libc.so.6+0x27249)

  Location is heap block of size 944 at 0x7b600006e400 allocated by main thread:
    #0 operator new(unsigned long) ../../../../src/libsanitizer/tsan/tsan_new_delete.cpp:64 (libtsan.so.2+0x87323)
    #1 std::__new_allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/include/c++/12/bits/new_allocator.h:137 (openroad+0xdbfd91)
    #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/include/c++/12/bits/alloc_traits.h:464 (openroad+0xdbfd91)
    #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<gpl::NesterovBase, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> >&) /usr/include/c++/12/bits/allocated_ptr.h:98 (openroad+0xdbfd91)
    #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<gpl::NesterovBase, std::allocator<void>, gpl::NesterovBaseVars&, std::shared_ptr<gpl::PlacerBase> const&, std::shared_ptr<gpl::NesterovBaseCommon>&, utl::Logger*&>(gpl::NesterovBase*&, std::_Sp_alloc_shared_tag<std::allocator<void> >, gpl::NesterovBaseVars&, std::shared_ptr<gpl::PlacerBase> const&, std::shared_ptr<gpl::NesterovBaseCommon>&, utl::Logger*&) /usr/include/c++/12/bits/shared_ptr_base.h:969 (openroad+0xdbfd91)
[...]
==================
[...]
==================
WARNING: ThreadSanitizer: data race (pid=51846)
  Write of size 4 at 0x7f186dc91cc0 by main thread:
    #0 gpl::GPin::updateDensityLocation(gpl::GCell const*) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:415 (openroad+0xded6d2)
    #1 gpl::GCell::setDensityCenterLocation(int, int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:189 (openroad+0xded922)
    #2 gpl::NesterovBase::updateGCellDensityCenterLocation(std::vector<gpl::FloatPoint, std::allocator<gpl::FloatPoint> > const&) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1532 (openroad+0xdf3257)
    #3 gpl::NesterovBase::initDensity1() /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1875 (openroad+0xdf65e5)
    #4 gpl::NesterovPlace::init() /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovPlace.cpp:217 (openroad+0xdcf833)
    #5 gpl::NesterovPlace::NesterovPlace(gpl::NesterovPlaceVars const&, std::shared_ptr<gpl::PlacerBaseCommon> const&, std::shared_ptr<gpl::NesterovBaseCommon> const&, std::vector<std::shared_ptr<gpl::PlacerBase>, std::allocator<std::shared_ptr<gpl::PlacerBase> > >&, std::vector<std::shared_ptr<gpl::NesterovBase>, std::allocator<std::shared_ptr<gpl::NesterovBase> > >&, std::shared_ptr<gpl::RouteBase>, std::shared_ptr<gpl::TimingBase>, utl::Logger*) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovPlace.cpp:84 (openroad+0xdd1002)
    #6 gpl::Replace::initNesterovPlace(int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/replace.cpp:364 (openroad+0xdc061a)
    #7 gpl::Replace::getUniformTargetDensity(int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/replace.cpp:442 (openroad+0xdc5260)
    #8 get_global_placement_uniform_density_cmd() /OpenROAD-flow-scripts/tools/OpenROAD/build/src/gpl/CMakeFiles/gpl.dir/replaceTCL_wrap.cxx:2015 (openroad+0xe959ed)
    #9 _wrap_get_global_placement_uniform_density_cmd /OpenROAD-flow-scripts/tools/OpenROAD/build/src/gpl/CMakeFiles/gpl.dir/replaceTCL_wrap.cxx:3322 (openroad+0xe95a49)
    #10 TclNRRunCallbacks <null> (libtcl8.6.so+0x420c7)
    #11 tclAppInit /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:507 (openroad+0xd0ce43)
    #12 ord::tclInit(Tcl_Interp*) /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:550 (openroad+0xd0d9ae)
    #13 ord::tclAppInit(Tcl_Interp*) /OpenROAD-flow-scripts/tools/OpenROAD/src/Main.cc:545 (openroad+0xd0d9ae)
    #14 Tcl_MainEx <null> (libtcl8.6.so+0x108aa0)
    #15 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 (libc.so.6+0x27249)

  Previous write of size 4 at 0x7f186dc91cc0 by thread T15:
    #0 gpl::GPin::updateDensityLocation(gpl::GCell const*) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:415 (openroad+0xded6d2)
    #1 gpl::GCell::setDensityLocation(int, int) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:173 (openroad+0xded7f2)
    #2 gpl::NesterovBase::updateDensityCoordiLayoutInside(gpl::GCell*) /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1734 (openroad+0xdf3ab3)
    #3 gpl::NesterovBase::initDensity1() [clone ._omp_fn.0] /OpenROAD-flow-scripts/tools/OpenROAD/src/gpl/src/nesterovBase.cpp:1859 (openroad+0xdfcc21)
    #4 <null> <null> (libgomp.so.1+0x1cd8d)
[...]

Screenshots

No response

Additional Context

As ThreadSanitizer warnings can be quite long, logs are attached as files (they may not contain all data races, because processes were terminated after a few hours):

@maliberty maliberty added the gpl Global Placement label Nov 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gpl Global Placement
Projects
None yet
Development

No branches or pull requests

3 participants