https://bugs.kde.org/show_bug.cgi?id=502302
Bug ID: 502302 Summary: crash in std::default_delete<QFFmpegResampler>::operator() Classification: Applications Product: digikam Version: 8.6.0 Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: Preview-Video Assignee: digikam-bugs-n...@kde.org Reporter: gilbertd+...@treblig.org Target Milestone: --- SUMMARY I've seen a couple of digikam crashes recently, I've got a backtrace below showing it's in std::default_delete<QFFmpegResampler>::operator() STEPS TO REPRODUCE (It seems to happen when some of the time) 1. Take an album with some video files among the images (not sure which format is triggering it) 2. Open one of the images 3. Use back and forward arrows to move between the images 4. Run into one of the videos OBSERVED RESULT Crash as shown below EXPECTED RESULT No crash SOFTWARE/OS VERSIONS Linux/KDE Plasma: Fedora 42 beta, under xfce digikam-libs-8.6.0-2.fc42.x86_64 digikam-8.6.0-2.fc42.x86_64 digiKam: 8.6.0 KDE Frameworks: 6.12.0 Qt: Using 6.8.2 and built against 6.8.2 Fedora Linux 42 (Adams Prerelease) (Xcb) Build ABI: x86_64-little_endian-lp64 Kernel: linux 6.14.0-63.fc42.x86_64 ADDITIONAL INFORMATION The crashing thread is thread 1, all the others seem to be in __syscall_cancel_arch (gdb) bt full #0 0x00007f403bf2f45d in std::default_delete<QFFmpegResampler>::operator() (this=<optimized out>, __ptr=0x7f3f2caff100, this=<optimized out>, __ptr=<optimized out>) at /usr/include/c++/15/bits/unique_ptr.h:87 #1 std::__uniq_ptr_impl<QFFmpegResampler, std::default_delete<QFFmpegResampler> >::reset (this=0x559082db2a30, __p=0x0, this=<optimized out>, __p=<optimized out>) at /usr/include/c++/15/bits/unique_ptr.h:205 __old_p = 0x7f3f2caff100 __old_p = <optimized out> #2 std::unique_ptr<QFFmpegResampler, std::default_delete<QFFmpegResampler> >::reset (this=0x559082db2a30, __p=0x0) at /usr/include/c++/15/bits/unique_ptr.h:504 #3 QFFmpeg::AudioRenderer::updateOutputs (this=0x559082db2910, frame=...) at /usr/src/debug/qt6-qtmultimedia-6.8.2-1.fc42.x86_64/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp:255 #4 QFFmpeg::AudioRenderer::renderInternal (this=0x559082db2910, frame=...) at /usr/src/debug/qt6-qtmultimedia-6.8.2-1.fc42.x86_64/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp:117 result = {done = <optimized out>, recheckInterval = std::chrono::duration = { <optimized out>us }} #5 0x00007f403bf2a25e in QFFmpeg::Renderer::doNextStep (this=0x559082db2910) at /usr/src/debug/qt6-qtmultimedia-6.8.2-1.fc42.x86_64/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegrenderer.cpp:168 frame = {d = {d = <optimized out>}} result = {done = <optimized out>, recheckInterval = std::chrono::duration = { <optimized out>us }} #6 0x00007f411035eefa in QtPrivate::QSlotObjectBase::call (this=0x7f3f2c4504d0, r=0x559082db2910, a=0x7f3f5affa110) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486 #7 doActivate<false> (sender=0x7f3f2cafeea0, signal_index=3, argv=argv@entry=0x7f3f5affa110) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qobject.cpp:4115 obj = {m_slotObject = std::unique_ptr<QtPrivate::QSlotObjectBase> = {get() = 0x7f3f2c4504d0}} receiver = 0x559082db2910 td = <optimized out> receiverInSameThread = <optimized out> senderData = {previous = 0x0, receiver = 0x0, sender = 0x7f3f2cafeea0, signal = 3} c = 0x7f3f2c53e600 connections = {d = 0x7f3f2c5a2990} list = 0x7f3f2c461290 inSenderThread = <optimized out> highestConnectionId = 1 signalVector = 0x7f3f2c461240 currentThreadId = 0x7f3f5affd6c0 --Type <RET> for more, q to quit, c to continue without paging-- sp = <optimized out> signal_spy_set = 0x0 empty_argv = {0x0} senderDeleted = false #8 0x00007f41103558a9 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f4110883060 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7f3f5affa110) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qobject.cpp:4175 signal_index = <optimized out> #9 0x00007f411036ef0d in QTimer::timeout (this=<optimized out>, _t1=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qtimer.cpp:223 _a = {0x0, 0x7f3f5affa10f} #10 0x00007f411034f9b5 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qobject.cpp:1448 #11 0x00007f411143d4ca in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x7f3f2cafeea0, e=0x7f3f5affa2d0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/widgets/kernel/qapplication.cpp:3296 consumed = false filtered = false #12 0x00007f41102f549c in QCoreApplication::notifyInternal2 (receiver=0x7f3f2cafeea0, event=0x7f3f5affa2d0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1172 selfRequired = <optimized out> result = false cbdata = {0x7f3f2cafeea0, 0x7f3f5affa2d0, 0x7f3f5affa23f} d = <optimized out> threadData = 0x5590798e5950 scopeLevelCounter = {threadData = 0x5590798e5950} #13 0x00007f41102f56ed in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1612 #14 0x00007f41104b9d78 in QTimerInfoList::activateTimers (this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qtimerinfo_unix.cpp:426 e = {<QEvent> = {_vptr.QEvent = 0x7f4110880c30 <vtable for QTimerEvent+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f4110700980 <qt_meta_stringdata_ZN6QEventE>, data = 0x7f41107003a0 <qt_meta_data_ZN6QEventE>, static_metacall = 0x0, relatedMetaObjects = 0x0, metaTypes = 0x7f411087b880 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_tag_ZN6QEventE_t, QtPrivate::TypeAndForceComplete<QEvent::Type, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QEvent, std::integral_constant<bool, true> > >>, extradata = 0x0}}, t = 1, m_posted = false, m_spont--Type <RET> for more, q to quit, c to continue without paging-- = false, m_accept = true, m_unused = false, m_reserved = 0, m_inputEvent = 0, m_pointerEvent = 0, m_singlePointEvent = 0}, m_id = (unknown: 0x80000a3)} currentTimerInfo = 0x0 now = std::chrono::_V2::steady_clock time_point = { 20803354939552ns } stillActive = Python Exception <class 'gdb.error'>: value has been optimized out {__now = <synthetic pointer>} it = {i = <optimized out>} maxCount = <optimized out> n_act = 1 #15 0x00007f41105f69f1 in timerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:152 timerSource = <optimized out> #16 idleTimerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:199 timerSource = <optimized out> #17 0x00007f410399c5e0 in g_main_dispatch (context=0x7f3f2c001da0) at ../glib/gmain.c:3398 dispatch = 0x7f41105f69c0 <idleTimerSourceDispatch(GSource*, GSourceFunc, gpointer)> prev_source = 0x0 begin_time_nsec = 20803354939411 was_in_call = 0 user_data = 0x0 callback = 0x0 cb_funcs = 0x0 cb_data = 0x0 need_destroy = <optimized out> source = 0x7f3f2c002da0 current = 0x7f3f2c59d580 i = 1 #18 g_main_context_dispatch_unlocked (context=0x7f3f2c001da0) at ../glib/gmain.c:4249 #19 0x00007f41039a5708 in g_main_context_iterate_unlocked (context=context@entry=0x7f3f2c001da0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4314 max_priority = 2147483647 timeout_usec = 18000 some_ready = 1 nfds = 1 allocated_nfds = <optimized out> --Type <RET> for more, q to quit, c to continue without paging-- fds = <optimized out> begin_time_nsec = <optimized out> #20 0x00007f41039a58b7 in g_main_context_iteration (context=0x7f3f2c001da0, may_block=1) at ../glib/gmain.c:4379 retval = <optimized out> #21 0x00007f41105f6cc3 in QEventDispatcherGlib::processEvents (this=0x7f3f2c53efe0, flags=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:399 d = 0x7f3f2c43dac0 canWait = <optimized out> savedFlags = {i = 0} result = <optimized out> #22 0x00007f41103026d3 in QEventLoop::exec (this=this@entry=0x7f3f5affa590, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/global/qflags.h:34 d = 0x7f3f2c001000 threadData = <optimized out> locker = {m_mutex = 0x559083c767a8, m_isLocked = false} ref = {d = <optimized out>, locker = <optimized out>, exceptionCaught = <optimized out>} app = <optimized out> #23 0x00007f411041eb2f in QThread::exec (this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/thread/qthread.cpp:590 d = 0x559083c76730 status = <optimized out> locker = {m_mutex = 0x559083c767a8, m_isLocked = false} eventLoop = {<QObject> = {_vptr.QObject = 0x7f4110880da8 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f41107045e0 <qt_meta_stringdata_ZN7QObjectE>, data = 0x7f41107044c0 <qt_meta_data_ZN7QObjectE>, static_metacall = 0x7f411035bbb0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7f41108828a0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_tag_ZN7QObjectE_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x7f3f2c001000}}, static staticMetaObject = {d = {superdata = {direct = 0x7f411087ca40 <QObject::staticMetaObject>}, stringdata = 0x7f4110701b60 <qt_meta_stringdata_ZN10QEventLoopE>, data = 0x7f4110701a60 <qt_meta_data_ZN10QEventLoopE>, static_metacall = 0x7f41103022a0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x7f4110880cc0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_tag_ZN10QEventLoopE_t, QtPrivate::TypeAndForceComplete<QFlags<QEventLoop::ProcessEventsFlag>, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceCompl--Type <RET> for more, q to quit, c to continue without paging-- ete<QEventLoop, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}} returnCode = <optimized out> #24 0x00007f41104bb6d0 in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/thread/qthread_unix.cpp:375 #25 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/thread/qthread_unix.cpp:311 #26 QThreadPrivate::start (arg=0x55908035ed20) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc42.x86_64/src/corelib/thread/qthread_unix.cpp:339 __clframe = {__cancel_routine = <optimized out>, __cancel_arg = 0x55908035ed20, __do_it = 1, __cancel_type = <optimized out>} thr = 0x55908035ed20 data = <optimized out> #27 0x00007f410fc7e324 in start_thread (arg=<optimized out>) at pthread_create.c:448 ret = <optimized out> pd = <optimized out> out = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139910086383296, 3791760048067575670, 0, 140729691197408, 139917414359104, 139910086383296, 3791760048090644342, 3775041078443376502}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> #28 0x00007f410fd01cfc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78 -- You are receiving this mail because: You are watching all bug changes.