mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-21 04:09:42 +00:00
To fix TSAN warning: WARNING: ThreadSanitizer: data race (pid=68597) Write of size 1 at 0x7b3800079234 by main thread: #0 SceneUtil::WorkQueue::start(unsigned long) /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:51 (openmw+0x10daa10) #1 SceneUtil::WorkQueue::WorkQueue(unsigned long) /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:39 (openmw+0x10dad97) #2 OMW::Engine::prepareEngine(Settings::Manager&) /home/elsid/dev/openmw/apps/openmw/engine.cpp:700 (openmw+0xf7cb5a) #3 OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:949 (openmw+0xf82688) #4 runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:316 (openmw+0xf62611) #5 wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/components/debug/debugging.cpp:205 (openmw+0x125df1c) #6 main /home/elsid/dev/openmw/apps/openmw/main.cpp:328 (openmw+0x596323) Previous read of size 1 at 0x7b3800079234 by thread T10 (mutexes: write M19275778865205896): #0 SceneUtil::WorkQueue::removeWorkItem() /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:86 (openmw+0x10d9e51) #1 SceneUtil::WorkThread::run() /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:127 (openmw+0x10da52a) #2 operator() /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:114 (openmw+0x10da664) #3 __invoke_impl<void, SceneUtil::WorkThread::WorkThread(SceneUtil::WorkQueue&)::<lambda()> > /usr/include/c++/11.1.0/bits/invoke.h:61 (openmw+0x10da664) #4 __invoke<SceneUtil::WorkThread::WorkThread(SceneUtil::WorkQueue&)::<lambda()> > /usr/include/c++/11.1.0/bits/invoke.h:96 (openmw+0x10da664) #5 _M_invoke<0> /usr/include/c++/11.1.0/bits/std_thread.h:253 (openmw+0x10da664) #6 operator() /usr/include/c++/11.1.0/bits/std_thread.h:260 (openmw+0x10da664) #7 _M_run /usr/include/c++/11.1.0/bits/std_thread.h:211 (openmw+0x10da664) #8 execute_native_thread_routine /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:82 (libstdc++.so.6+0xd33c3) Location is heap block of size 216 at 0x7b3800079220 allocated by main thread: #0 operator new(unsigned long) /build/gcc/src/gcc/libsanitizer/tsan/tsan_new_delete.cpp:64 (libtsan.so.0+0x91824) #1 OMW::Engine::prepareEngine(Settings::Manager&) /home/elsid/dev/openmw/apps/openmw/engine.cpp:700 (openmw+0xf7cb4c) #2 OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:949 (openmw+0xf82688) #3 runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:316 (openmw+0xf62611) #4 wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/components/debug/debugging.cpp:205 (openmw+0x125df1c) #5 main /home/elsid/dev/openmw/apps/openmw/main.cpp:328 (openmw+0x596323) Mutex M19275778865205896 is already destroyed. Thread T10 (tid=68609, running) created by main thread at: #0 pthread_create /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x61c3a) #1 std:🧵:_M_start_thread(std::unique_ptr<std:🧵:_State, std::default_delete<std:🧵:_State> >, void (*)()) /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663 (libstdc++.so.6+0xd36aa) #2 std::_MakeUniq<SceneUtil::WorkThread>::__single_object std::make_unique<SceneUtil::WorkThread, SceneUtil::WorkQueue&>(SceneUtil::WorkQueue&) /usr/include/c++/11.1.0/bits/unique_ptr.h:962 (openmw+0x10da987) #3 SceneUtil::WorkQueue::start(unsigned long) /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:50 (openmw+0x10da987) #4 SceneUtil::WorkQueue::WorkQueue(unsigned long) /home/elsid/dev/openmw/components/sceneutil/workqueue.cpp:39 (openmw+0x10dad97) #5 OMW::Engine::prepareEngine(Settings::Manager&) /home/elsid/dev/openmw/apps/openmw/engine.cpp:700 (openmw+0xf7cb5a) #6 OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:949 (openmw+0xf82688) #7 runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:316 (openmw+0xf62611) #8 wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/components/debug/debugging.cpp:205 (openmw+0x125df1c) #9 main /home/elsid/dev/openmw/apps/openmw/main.cpp:328 (openmw+0x596323) |
||
---|---|---|
.. | ||
actorutil.cpp | ||
actorutil.hpp | ||
agentpath.cpp | ||
agentpath.hpp | ||
attach.cpp | ||
attach.hpp | ||
clone.cpp | ||
clone.hpp | ||
controller.cpp | ||
controller.hpp | ||
detourdebugdraw.cpp | ||
detourdebugdraw.hpp | ||
keyframe.hpp | ||
lightcontroller.cpp | ||
lightcontroller.hpp | ||
lightmanager.cpp | ||
lightmanager.hpp | ||
lightutil.cpp | ||
lightutil.hpp | ||
morphgeometry.cpp | ||
morphgeometry.hpp | ||
mwshadowtechnique.cpp | ||
mwshadowtechnique.hpp | ||
navmesh.cpp | ||
navmesh.hpp | ||
optimizer.cpp | ||
optimizer.hpp | ||
osgacontroller.cpp | ||
osgacontroller.hpp | ||
pathgridutil.cpp | ||
pathgridutil.hpp | ||
positionattitudetransform.cpp | ||
positionattitudetransform.hpp | ||
recastmesh.cpp | ||
recastmesh.hpp | ||
riggeometry.cpp | ||
riggeometry.hpp | ||
rtt.cpp | ||
rtt.hpp | ||
screencapture.cpp | ||
screencapture.hpp | ||
serialize.cpp | ||
serialize.hpp | ||
shadow.cpp | ||
shadow.hpp | ||
shadowsbin.cpp | ||
shadowsbin.hpp | ||
skeleton.cpp | ||
skeleton.hpp | ||
statesetupdater.cpp | ||
statesetupdater.hpp | ||
textkeymap.hpp | ||
unrefqueue.cpp | ||
unrefqueue.hpp | ||
util.cpp | ||
util.hpp | ||
visitor.cpp | ||
visitor.hpp | ||
waterutil.cpp | ||
waterutil.hpp | ||
workqueue.cpp | ||
workqueue.hpp | ||
writescene.cpp | ||
writescene.hpp |