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.

Reply via email to