xmms2 / promoe

A client with a WinAmp / XMMS 1 look
GNU General Public License v2.0
7 stars 3 forks source link

Crash on latest Qt5 #6

Open Malvineous opened 1 year ago

Malvineous commented 1 year ago

@dsvensson Any ideas why Promoe might crash when compiled against the latest version of Qt5? Looks like something weird going on with the signals:

Thread 1 "promoe" received signal SIGILL, Illegal instruction.
0x000055555564b376 in XPlayback::volume_changed (this=0x5555557ee4b0, volDict=...) at ../backend_xmmsclient++/xplayback.cpp:154
154     {
(gdb) bt
#0  0x000055555564b376 in XPlayback::volume_changed (this=0x5555557ee4b0, volDict=...) at ../backend_xmmsclient++/xplayback.cpp:154
#1  0x000055555564eeda in boost::_mfi::mf1<bool, XPlayback, Xmms::Dict const&>::operator() (this=0x555555a33408, p=0x5555557ee4b0, a1=...)
    at /usr/include/boost/bind/mem_fn_template.hpp:165
#2  0x000055555564e9a2 in boost::_bi::list2<boost::_bi::value<XPlayback*>, boost::arg<1> >::operator()<bool, boost::_mfi::mf1<bool, XPlayback, Xmms::Dict const&>, boost::_bi::rrlist1<Xmms::Dict const&> > (this=0x555555a33418, f=..., a=...) at /usr/include/boost/bind/bind.hpp:288
#3  0x000055555564e521 in boost::_bi::bind_t<bool, boost::_mfi::mf1<bool, XPlayback, Xmms::Dict const&>, boost::_bi::list2<boost::_bi::value<XPlayback*>, boost::arg<1> > >::operator()<Xmms::Dict const&> (this=0x555555a33408, a1=...) at /usr/include/boost/bind/bind.hpp:1285
#4  0x000055555564dc4a in boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<bool, boost::_mfi::mf1<bool, XPlayback, Xmms::Dict const&>, boost::_bi::list2<boost::_bi::value<XPlayback*>, boost::arg<1> > >, bool, Xmms::Dict const&>::invoke (function_obj_ptr=..., a0=...)
    at /usr/include/boost/function/function_template.hpp:137
#5  0x00005555556249e6 in boost::function1<bool, Xmms::Dict const&>::operator() (this=0x555555a33400, a0=...)
    at /usr/include/boost/function/function_template.hpp:763
#6  0x000055555562245e in boost::detail::function::function_obj_invoker1<boost::function<bool (Xmms::Dict const&)>, bool, Xmms::Dict&>::invoke(boost::detail::function::function_buffer&, Xmms::Dict&) (function_obj_ptr=..., a0=...) at /usr/include/boost/function/function_template.hpp:137
#7  0x00005555556252be in boost::function1<bool, Xmms::Dict&>::operator() (this=0x5555559c1af0, a0=...)
    at /usr/include/boost/function/function_template.hpp:763
#8  0x0000555555622b9d in Xmms::callSignal<Xmms::Dict> (sig=0x555555a539f0, val=@0x7fffffffd5a8: 0x555555a33430)
    at /usr/local/include/xmms2/xmmsclient/xmmsclient++/signal.h:208
#9  0x000055555561f792 in Xmms::generic_callback<Xmms::Dict> (val=0x555555a33430, userdata=0x555555a539f0)
    at /usr/local/include/xmms2/xmmsclient/xmmsclient++/signal.h:278
#10 0x00007ffff7f73d24 in xmmsc_result_run_callback (res=0x555555a28a90, cb=0x555555a9d540) at ../src/clients/lib/xmmsclient/result.c:530
#11 0x00007ffff7f73e79 in xmmsc_result_run (res=0x555555a28a90, msg=0x555555a334e0) at ../src/clients/lib/xmmsclient/result.c:565
#12 0x00007ffff7f6e2d0 in xmmsc_ipc_exec_msg (ipc=0x555555a9e540, msg=0x555555a334e0) at ../src/clients/lib/xmmsclient/ipc.c:407
#13 0x00007ffff7f6d269 in xmmsc_ipc_io_in_callback (ipc=0x555555a9e540) at ../src/clients/lib/xmmsclient/ipc.c:80
#14 0x00007ffff7f79375 in xmmsc_io_in_handle (c=0x555555a2d4e0) at ../src/clients/lib/xmmsclient/xmmsclient.c:541
#15 0x000055555564a68a in XmmsQT4::OnRead (this=0x555555a2d350) at ../backend_xmmsclient++/xmmsqt4.cpp:65
#16 0x00005555556525c4 in XmmsQT4::qt_static_metacall (_o=0x555555a2d350, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffffffd880)
    at backend_xmmsclient++/moc_xmmsqt4.1.cpp:75
#17 0x00007ffff7cd13f3 in doActivate<false> (sender=0x555555a3bdb0, signal_index=5, argv=0x7fffffffd880) at kernel/qobject.cpp:3937
#18 0x00007ffff7cd2aa9 in QSocketNotifier::activated (this=this@entry=0x555555a3bdb0, _t1=<optimized out>, _t2=...) at .moc/moc_qsocketnotifier.cpp:185
#19 0x00007ffff7cd2b9b in QSocketNotifier::event (this=0x555555a3bdb0, e=<optimized out>) at kernel/qsocketnotifier.h:115
#20 0x00007ffff6b7893f in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x555555a3bdb0, e=0x7fffffffd990) at kernel/qapplication.cpp:3640
#21 0x00007ffff7c9c2f8 in QCoreApplication::notifyInternal2 (receiver=0x555555a3bdb0, event=0x7fffffffd990) at kernel/qcoreapplication.cpp:1064
#22 0x00007ffff7ce9ec6 in socketNotifierSourceDispatch (source=0x5555557eb040) at kernel/qeventdispatcher_glib.cpp:107
#23 0x00007ffff5d0fa31 in g_main_dispatch (context=0x7fffec000ee0) at ../glib/glib/gmain.c:3460
#24 g_main_context_dispatch (context=0x7fffec000ee0) at ../glib/glib/gmain.c:4200
#25 0x00007ffff5d6ccc9 in g_main_context_iterate.isra.0 (context=context@entry=0x7fffec000ee0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at ../glib/glib/gmain.c:4276
#26 0x00007ffff5d0d0e2 in g_main_context_iteration (context=0x7fffec000ee0, may_block=1) at ../glib/glib/gmain.c:4343
#27 0x00007ffff7ceb15c in QEventDispatcherGlib::processEvents (this=0x5555557e4250, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#28 0x00007ffff7c9b004 in QEventLoop::exec (this=this@entry=0x7fffffffdc10, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#29 0x00007ffff7c9c4a3 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#30 0x00005555555c6e66 in main (argc=1, argv=0x7fffffffde38) at ../src/application.cpp:169

I blanked out the function so that it was a no-op but it still crashed with the same error, so it's not something that happens inside the function that's to blame. I'm not familiar with Qt or the XMMS2 signals system so I don't really know how to debug further.

dsvensson commented 1 year ago

Maybe needs the cb to land in the correct gui thread? 🤷‍♂️ Qt connector should deal with that, maybe it needs to be changed.