[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #63752] experimental-terminal-widget crashes O
From: |
Dmitri A. Sergatskov |
Subject: |
[Octave-bug-tracker] [bug #63752] experimental-terminal-widget crashes Octave |
Date: |
Tue, 7 Mar 2023 17:17:04 -0500 (EST) |
Follow-up Comment #13, bug #63752 (project octave):
Sorry. Fixed all those:
HG ID for this build is "129e5fc5372b"
make[2]: Leaving directory '/home/dima/src/octave/gcc_tsan'
make[1]: Leaving directory '/home/dima/src/octave/gcc_tsan'
[dima@ryzen gcc_tsan]$ TSAN_OPTIONS='ignore_noninstrumented_modules=1'
./run-octave -f --gui --experimental-terminal-widget
==================
WARNING: ThreadSanitizer: data race (pid=201467)
Read of size 1 at 0x7ffeedfaba90 by thread T7:
#0 octave::qt_application::gui_running() const
../libgui/src/qt-application.h:63 (liboctgui.so.9+0x31c6c8)
#1 octave::application::is_gui_running() ../libinterp/octave.h:320
(liboctinterp.so.11+0x4e85af)
#2 octave::F__event_manager_gui_preference__(octave::interpreter&,
octave_value_list const&, int) ../libinterp/corefcn/event-manager.cc:546
(liboctinterp.so.11+0xdbd645)
#3 octave::tree_evaluator::execute_builtin_function(octave_builtin&, int,
octave_value_list const&) ../libinterp/parse-tree/pt-eval.cc:3444
(liboctinterp.so.11+0xbf58be)
#4 octave_builtin::execute(octave::tree_evaluator&, int, octave_value_list
const&) ../libinterp/octave-value/ov-builtin.cc:49
(liboctinterp.so.11+0x9b789b)
#5 octave_function::call(octave::tree_evaluator&, int, octave_value_list
const&) ../libinterp/octave-value/ov-fcn.cc:57 (liboctinterp.so.11+0xa37cf0)
#6 octave::interpreter::feval(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, octave_value_list
const&, int) ../libinterp/corefcn/interpreter.cc:1564
(liboctinterp.so.11+0x108554e)
#7 octave::interpreter::feval(char const*, octave_value_list const&, int)
../libinterp/corefcn/interpreter.cc:1550 (liboctinterp.so.11+0x10853d1)
#8 octave::feval(char const*, octave_value_list const&, int)
../libinterp/parse-tree/oct-parse.yy:6289 (liboctinterp.so.11+0xba8947)
#9 octave::input_system::mfile_encoding(octave_value_list const&, int)
../libinterp/corefcn/input.cc:532 (liboctinterp.so.11+0x106d844)
#10 octave::F__mfile_encoding__(octave::interpreter&, octave_value_list
const&, int) ../libinterp/corefcn/input.cc:1592
(liboctinterp.so.11+0x1070e36)
#11 operator() ../libgui/src/main-window.cc:2774
(liboctgui.so.9+0x2c6042)
#12 __invoke_impl<void, octave::main_window::update_default_encoding(const
QString&)::<lambda(octave::interpreter&)>&, octave::interpreter&>
/usr/include/c++/11/bits/invoke.h:61 (liboctgui.so.9+0x2d1551)
#13 __invoke_r<void, octave::main_window::update_default_encoding(const
QString&)::<lambda(octave::interpreter&)>&, octave::interpreter&>
/usr/include/c++/11/bits/invoke.h:111 (liboctgui.so.9+0x2cf3df)
#14 _M_invoke /usr/include/c++/11/bits/std_function.h:290
(liboctgui.so.9+0x2cb3f1)
#15 std::function<void
(octave::interpreter&)>::operator()(octave::interpreter&) const
/usr/include/c++/11/bits/std_function.h:590 (liboctinterp.so.11+0xdc8bb8)
#16 void std::__invoke_impl<void, std::function<void
(octave::interpreter&)>&, octave::interpreter&>(std::__invoke_other,
std::function<void (octave::interpreter&)>&, octave::interpreter&)
/usr/include/c++/11/bits/invoke.h:61 (liboctinterp.so.11+0xdc8afa)
#17 std::__invoke_result<std::function<void (octave::interpreter&)>&,
octave::interpreter&>::type std::__invoke<std::function<void
(octave::interpreter&)>&, octave::interpreter&>(std::function<void
(octave::interpreter&)>&, octave::interpreter&)
/usr/include/c++/11/bits/invoke.h:96 (liboctinterp.so.11+0xdc8a17)
#18 void std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>::__call<void, ,
0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)
/usr/include/c++/11/functional:420 (liboctinterp.so.11+0xdc893c)
#19 void std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>::operator()<, void>()
/usr/include/c++/11/functional:503 (liboctinterp.so.11+0xdc88c6)
#20 void std::__invoke_impl<void, std::_Bind<std::function<void
(octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>&>(std::__invoke_other,
std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>&)
/usr/include/c++/11/bits/invoke.h:61 (liboctinterp.so.11+0xdc8873)
#21 std::__invoke_result<std::_Bind<std::function<void
(octave::interpreter&)> (std::reference_wrapper<octave::interpreter>)>&>::type
std::__invoke<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>&>(std::_Bind<std::function<void
(octave::interpreter&)> (std::reference_wrapper<octave::interpreter>)>&)
/usr/include/c++/11/bits/invoke.h:96 (liboctinterp.so.11+0xdc86c4)
#22 void std::_Bind<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)>
()>::__call<void>(std::tuple<>&&, std::_Index_tuple<>)
/usr/include/c++/11/functional:420 (liboctinterp.so.11+0xdc8594)
#23 void std::_Bind<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)> ()>::operator()<, void>()
/usr/include/c++/11/functional:503 (liboctinterp.so.11+0xdc82be)
#24 void std::__invoke_impl<void, std::_Bind<std::_Bind<std::function<void
(octave::interpreter&)> (std::reference_wrapper<octave::interpreter>)>
()>&>(std::__invoke_other, std::_Bind<std::_Bind<std::function<void
(octave::interpreter&)> (std::reference_wrapper<octave::interpreter>)> ()>&)
/usr/include/c++/11/bits/invoke.h:61 (liboctinterp.so.11+0xdc7c4d)
#25 std::enable_if<is_invocable_r_v<void,
std::_Bind<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)> ()>&>, void>::type
std::__invoke_r<void, std::_Bind<std::_Bind<std::function<void
(octave::interpreter&)> (std::reference_wrapper<octave::interpreter>)>
()>&>(std::_Bind<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)> ()>&)
/usr/include/c++/11/bits/invoke.h:111 (liboctinterp.so.11+0xdc6ecd)
#26 std::_Function_handler<void (),
std::_Bind<std::_Bind<std::function<void (octave::interpreter&)>
(std::reference_wrapper<octave::interpreter>)> ()> >::_M_invoke(std::_Any_data
const&) /usr/include/c++/11/bits/std_function.h:290
(liboctinterp.so.11+0xdc577c)
#27 std::function<void ()>::operator()() const
/usr/include/c++/11/bits/std_function.h:590 (liboctinterp.so.11+0x94ac34)
#28 octave::action_container::fcn_elem::run()
../liboctave/util/action-container.h:82 (liboctinterp.so.11+0xc029be)
#29 octave::event_queue::run_first() ../libinterp/corefcn/event-queue.h:63
(liboctinterp.so.11+0xdbec80)
#30 octave::action_container::run(unsigned long)
../liboctave/util/action-container.cc:42 (liboctave.so.10+0xe4ac04)
#31 octave::action_container::run()
../liboctave/util/action-container.h:202 (liboctinterp.so.11+0x983919)
#32 octave::event_manager::process_events(bool)
../libinterp/corefcn/event-manager.cc:120 (liboctinterp.so.11+0xdbaaa7)
#33 readline_event_hook ../libinterp/corefcn/event-manager.cc:53
(liboctinterp.so.11+0xdba5b0)
#34 octave::command_editor::event_handler()
../liboctave/util/cmd-edit.cc:1174 (liboctave.so.10+0xe4d932)
#35 octave::command_editor::run_event_hooks()
../liboctave/util/cmd-edit.cc:1583 (liboctave.so.10+0xe5004b)
#36 octave::tree_evaluator::server_loop()
../libinterp/parse-tree/pt-eval.cc:903 (liboctinterp.so.11+0xbea4e2)
#37 octave::interpreter::server_loop()
../libinterp/corefcn/interpreter.cc:1355 (liboctinterp.so.11+0x10846f4)
#38 octave::interpreter::execute() ../libinterp/corefcn/interpreter.cc:900
(liboctinterp.so.11+0x107eaa5)
#39 octave::interpreter_qobject::execute()
../libgui/src/interpreter-qobject.cc:89 (liboctgui.so.9+0x2432eb)
#40 octave::interpreter_qobject::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) libgui/src/moc-interpreter-qobject.cc:88
(liboctgui.so.9+0x3fb9e4)
#41 QObject::event(QEvent*) <null> (libQt5Core.so.5+0x2d1a98)
#42 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>
(libQt5Core.so.5+0x2a7357)
Previous write of size 1 at 0x7ffeedfaba90 by main thread:
#0 octave::qt_application::gui_running(bool)
../libgui/src/qt-application.h:64 (liboctgui.so.9+0x31c710)
#1 octave::base_qobject::start_gui(bool)
../libgui/src/octave-qobject.cc:794 (liboctgui.so.9+0x2fea48)
#2 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,
QtPrivate::List<bool>, void, void (octave::base_qobject::*)(bool)>::call(void
(octave::base_qobject::*)(bool), octave::base_qobject*, void**)
/usr/include/qt5/QtCore/qobjectdefs_impl.h:152 (liboctgui.so.9+0x30c437)
#3 void QtPrivate::FunctionPointer<void
(octave::base_qobject::*)(bool)>::call<QtPrivate::List<bool>, void>(void
(octave::base_qobject::*)(bool), octave::base_qobject*, void**)
/usr/include/qt5/QtCore/qobjectdefs_impl.h:185 (liboctgui.so.9+0x30b917)
#4 QtPrivate::QSlotObject<void (octave::base_qobject::*)(bool),
QtPrivate::List<bool>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*,
void**, bool*) /usr/include/qt5/QtCore/qobjectdefs_impl.h:418
(liboctgui.so.9+0x30a28f)
#5 QObject::event(QEvent*) <null> (libQt5Core.so.5+0x2d1a98)
#6 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>
(libQt5Core.so.5+0x2a7357)
#7 octave::qt_application::execute() ../libgui/src/qt-application.cc:73
(liboctgui.so.9+0x31c4ac)
#8 main ../src/main-gui.cc:148 (lt-octave-gui+0x403730)
As if synchronized via sleep:
#0 nanosleep <null> (libtsan.so.0+0x67afc)
#1 rpl_nanosleep ../../libgnu/nanosleep.c:81 (liboctave.so.10+0xecf735)
#2 octave_nanosleep_wrapper ../liboctave/wrappers/nanosleep-wrapper.c:42
(liboctave.so.10+0xeaa700)
#3 octave::sleep(double, bool) ../libinterp/corefcn/utils.cc:1599
(liboctinterp.so.11+0x12cd9ff)
#4 octave::tree_evaluator::server_loop()
../libinterp/parse-tree/pt-eval.cc:907 (liboctinterp.so.11+0xbea4fd)
#5 octave::interpreter::server_loop()
../libinterp/corefcn/interpreter.cc:1355 (liboctinterp.so.11+0x10846f4)
#6 octave::interpreter::execute() ../libinterp/corefcn/interpreter.cc:900
(liboctinterp.so.11+0x107eaa5)
#7 octave::interpreter_qobject::execute()
../libgui/src/interpreter-qobject.cc:89 (liboctgui.so.9+0x2432eb)
#8 octave::interpreter_qobject::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) libgui/src/moc-interpreter-qobject.cc:88
(liboctgui.so.9+0x3fb9e4)
#9 QObject::event(QEvent*) <null> (libQt5Core.so.5+0x2d1a98)
#10 QCoreApplication::notifyInternal2(QObject*, QEvent*) <null>
(libQt5Core.so.5+0x2a7357)
Location is stack of main thread.
Location is global '<null>' at 0x000000000000 ([stack]+0x000000029a90)
Thread T7 'QThread' (tid=201609, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x61748)
#1 QThread::start(QThread::Priority) <null> (libQt5Core.so.5+0xe969e)
#2 octave::base_qobject::base_qobject(octave::qt_application&, bool)
../libgui/src/octave-qobject.cc:326 (liboctgui.so.9+0x2fb77e)
#3 octave::qt_application::execute() ../libgui/src/qt-application.cc:71
(liboctgui.so.9+0x31c49d)
#4 main ../src/main-gui.cc:148 (lt-octave-gui+0x403730)
SUMMARY: ThreadSanitizer: data race ../libgui/src/qt-application.h:63 in
octave::qt_application::gui_running() const
==================
Dmitri.
--
(the warnings are on console)
On the terminal windows:
Welcome to Octave
>> ver
----------------------------------------------------------------------
GNU Octave Version: 8.1.1 (hg id: 129e5fc5372b)
GNU Octave License: GNU General Public License
Operating System: Linux 5.14.0-283.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Feb
23 22:23:05 UTC 2023 x86_64
----------------------------------------------------------------------
no packages installed.
>> version
ans = 8.1.1
>> sombrero
>>
It took looong time for plot sindows to pop-up, but it did.
No extra warning from TSAN.
Dmitri.
--
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?63752>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/