I compiled with thread sanitizer. It gives a lot of warnings just for starting/stopping octave. If I run
TSAN_OPTIONS=second_deadlock_stack=1 ./run-octave --norc --silent --no-history --eval 'figure (1, "visible", "off");' 2>tsan_plot.txt
A warnings that stands out is:
WARNING: ThreadSanitizer: data race (pid=24895)
Atomic write of size 8 at 0x7b0800000e80 by main thread (mutexes: write M103436625102881360):
#0 __tsan_atomic64_fetch_add <null> (libtsan.so.0+0x6987d)
#1 octave_atomic_increment ../liboctave/util/oct-atomic.c:41 (liboctave.so.8+0xd66884)
#2 dim_vector::increment_count() ../liboctave/array/dim-vector.h:104 (liboctgui.so.6+0x20da84)
#3 dim_vector::dim_vector() ../liboctave/array/dim-vector.h:271 (liboctgui.so.6+0x20dbe3)
#4 Array<double>::Array() ../liboctave/array/Array.h:257 (liboctgui.so.6+0x20fe59)
#5 MArray<double>::MArray() ../liboctave/array/MArray.h:72 (liboctgui.so.6+0x20f640)
#6 NDArray::NDArray() <null> (liboctgui.so.6+0x20e142)
#7 Matrix::Matrix() ../liboctave/array/dMatrix.h:62 (liboctgui.so.6+0x20e31e)
#8 QtHandles::Figure::Figure(octave::base_qobject&, octave::interpreter&, graphics_object const&, QtHandles::FigureWindow*) ../libgui/graphics/Figure.cc:137 (liboctgui.so.6+0x2305dd)
#9 QtHandles::Figure::create(octave::base_qobject&, octave::interpreter&, graphics_object const&) ../libgui/graphics/Figure.cc:116 (liboctgui.so.6+0x230155)
#10 QtHandles::qt_graphics_toolkit::create_object(double) ../libgui/graphics/qt-graphics-toolkit.cc:405 (liboctgui.so.6+0x28ee58)
#11 QtHandles::qt_graphics_toolkit::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) libgui/graphics/moc-qt-graphics-toolkit.cc:122 (liboctgui.so.6+0x29a2c4)
#12 QObject::event(QEvent*) <null> (libQt5Core.so.5+0x27c935)
#13 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null> (libQt5Core.so.5+0x252ec5)
#14 octave::qt_application::execute() ../libgui/src/qt-application.cc:73 (liboctgui.so.6+0x366cb1)
#15 main ../src/main-gui.cc:106 (lt-octave-gui+0x401c32)
Previous read of size 8 at 0x7b0800000e80 by thread T6:
#0 octave_atomic_increment ../liboctave/util/oct-atomic.c:43 (liboctave.so.8+0xd66890)
#1 dim_vector::increment_count() ../liboctave/array/dim-vector.h:104 (liboctgui.so.6+0x20da84)
#2 dim_vector::dim_vector() ../liboctave/array/dim-vector.h:271 (liboctgui.so.6+0x20dbe3)