Bug 352919 - Crash on delete into image editor [patch]
Summary: Crash on delete into image editor [patch]
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Database-Trash (show other bugs)
Version: 4.13.0
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-19 18:55 UTC by Dave Gilbert
Modified: 2020-08-12 08:17 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.14.0


Attachments
editor.patch (2.84 KB, patch)
2015-09-21 18:13 UTC, Maik Qualmann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dave Gilbert 2015-09-19 18:55:31 UTC
Segfault on deleting an image while in the image editor
See steps to reproduce below and backtrace
(4.130.0.1.fc23 on x86-64)

Reproducible: Always

Steps to Reproduce:
1. Open an image
2. Click for the image editor
3. Select a rectangle area
4. Crop to the area
5. hit delete

Actual Results:  
Seg fault - see backtrace below

Expected Results:  
No crash; either it ignores the delete or it deletes it and closes the editor.

#0  0x00007f5d1a331a17 in __memmove_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1549
#1  0x00007f5d1c41d80f in QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (__len=<optimized out>, __src=<optimized out>, __dest=<optimized out>)
    at /usr/include/bits/string3.h:59
        f = <optimized out>
        l = <optimized out>
        n = 1
#2  0x00007f5d1c41d80f in QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (aend=<optimized out>, abegin=<optimized out>, this=0x55ac901eb110)
    at ../../src/corelib/tools/qvector.h:642
        f = <optimized out>
        l = <optimized out>
        n = 1
#3  0x00007f5d1c41d80f in QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (n=<optimized out>, i=<optimized out>, this=0x55ac901eb110)
    at ../../src/corelib/tools/qvector.h:372
#4  0x00007f5d1c41d80f in QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (this=this@entry=0x55ac8f941d10, source_to_proxy=..., proxy_to_source=..., proxy_start=<optimized out>, proxy_end=<optimized out>, proxy_parent=..., orient=Qt::Vertical, emit_signal=true) at itemviews/qsortfilterproxymodel.cpp:564
#5  0x00007f5d1c422375 in QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) (this=this@entry=0x55ac8f941d10, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=orient@entry=Qt::Vertical, emit_signal=true)
    at itemviews/qsortfilterproxymodel.cpp:540
        i = 0
        proxy_parent = {r = -1, c = -1, p = 0x0, m = 0x0}
        proxy_intervals = {{d = 0x55ac90529120, p = 0x55ac90529120}}
#6  0x00007f5d1c4225ae in QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) (this=0x55ac8f941d10, source_parent=..., start=0, end=0, orient=Qt::Vertical)
    at itemviews/qsortfilterproxymodel.cpp:841
        it = <optimized out>
        m = <optimized out>
        source_to_proxy = <optimized out>
        proxy_to_source = @0x55ac901eb110: {{d = 0x8f65c900000055ac, p = 0x8f65c900000055ac}}
        source_items_to_remove = {{d = 0x55ac8fa2eb80, p = 0x55ac8fa2eb80}}
#7  0x00007f5d1b184a80 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55ac8f941b60, m=m@entry=0x7f5d1b4d4980 <QAbstractItemModel::staticMetaObject>, local_signal_index=local_signal_index@entry=6, argv=argv@entry=0x7fff2a794970) at kernel/qobject.cpp:3567
        receiverInSameThread = true
        previousSender = 0x0
        callFunction = 0x7f5d1c4242d0 <QSortFilterProxyModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>
        receiver = 0x55ac8f942000
        currentSender = {sender = 0x55ac8f941b60, signal = 10, ref = 1}
        method_relative = 13
        c = 0x55ac8f93f850
        last = 0x55ac8f93f850
        signalOffset = <optimized out>
        methodOffset = <optimized out>
        signal_index = <optimized out>
        signal_absolute_index = <optimized out>
        empty_argv = {0x0}
        currentThreadId = 140038073871168
        locker = {val = 94199586458208}
        connectionLists = <optimized out>
        list = 0x55ac8f93f0c0
#8  0x00007f5d1b1d5104 in QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) (this=this@entry=0x55ac8f941b60, _t1=..., _t2=_t2@entry=0, _t3=_t3@entry=0) at .moc/release-shared/moc_qabstractitemmodel.cpp:203
        _a = {0x0, 0x7fff2a794a50, 0x7fff2a79496c, 0x7fff2a794968}
#9  0x00007f5d1b166c05 in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (this=this@entry=0x55ac8f941b60, parent=..., first=first@entry=0, last=last@entry=0) at kernel/qabstractitemmodel.cpp:2470
        d = 0x55ac8f646150
#10 0x00007f5d2530c07c in Digikam::ImageModel::removeRowPairs(QList<QPair<int, int> > const&) (this=this@entry=0x55ac8f941b60, toRemove=...) at ../../../core/libs/models/imagemodel.cpp:997
        begin = 0
        end = 0
        removedInfos = 
---Type <return> to continue, or q <return> to quit---
            {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x55ac8ba58f60 <QListData::shared_null>}, d = 0x55ac8ba58f60 <QListData::shared_null>}}
        it = <optimized out>
        pair = <optimized out>
        _container_ = 
            {c = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x55ac90bc3e90}, d = 0x55ac90bc3e90}}, brk = 0, i = {i = 0x55ac90bc3ea8}, e = {i = 0x55ac90bc3eb0}}
        removedRows = 1
        offset = 1

#11 0x00007f5d2530ce53 in Digikam::ImageModel::removeRowPairsWithCheck(QList<QPair<int, int> > const&) (this=this@entry=0x55ac8f941b60, toRemove=...) at ../../../core/libs/models/imagemodel.cpp:964
#12 0x00007f5d2530d5dd in Digikam::ImageModel::removeImageInfos(QList<Digikam::ImageInfo> const&) (this=this@entry=0x55ac8f941b60, infos=...) at ../../../core/libs/models/imagemodel.cpp:895
        listIndexes = 
            {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x55ac8f1f5e60}, d = 0x55ac8f1f5e60}}
#13 0x00007f5d2530d6fd in Digikam::ImageModel::removeImageInfo(Digikam::ImageInfo const&) (this=0x55ac8f941b60, info=...) at ../../../core/libs/models/imagemodel.cpp:881
#14 0x000055ac8b261fe4 in Digikam::ImageWindow::removeCurrent() (this=0x55ac8f6077a0)
    at ../../../core/utilities/imageeditor/main/imagewindow.cpp:1233
#15 0x000055ac8b2690c8 in Digikam::ImageWindow::deleteCurrentItem(bool, bool) (this=0x55ac8f6077a0, ask=<optimized out>, permanently=<optimized out>) at ../../../core/utilities/imageeditor/main/imagewindow.cpp:1223
        useTrash = true
#16 0x000055ac8b26ac89 in Digikam::ImageWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>) at ./imagewindow.moc:148
#17 0x00007f5d1b184a80 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55ac8f96da80, m=m@entry=0x7f5d1c9507a0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7fff2a794e10) at kernel/qobject.cpp:3567
        receiverInSameThread = true
        previousSender = 0x0
        callFunction = 0x55ac8b26ae80 <Digikam::ImageWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>
        receiver = 0x55ac8f6077a0
        currentSender = {sender = 0x55ac8f96da80, signal = 5, ref = 1}
        method_relative = 19
        c = 0x55ac8f96e0a0
        last = 0x55ac8fa512d0
        signalOffset = <optimized out>
        methodOffset = <optimized out>
        signal_index = <optimized out>
        signal_absolute_index = <optimized out>
        empty_argv = {0x0}
        currentThreadId = 140038073871168
        locker = {val = 94199582701808}
        connectionLists = <optimized out>
        list = 0x55ac8f96e430
#18 0x00007f5d1be589d2 in QAction::triggered(bool) (this=this@entry=0x55ac8f96da80, _t1=false)
    at .moc/release-shared/moc_qaction.cpp:276
        _a = {0x0, 0x7fff2a794e0c}
#19 0x00007f5d1be59d33 in QAction::activate(QAction::ActionEvent) (this=0x55ac8f96da80, event=event@entry=QAction::Trigger) at kernel/qaction.cpp:1257
        guard = 0x55ac8f96da80
        d = <optimized out>
#20 0x00007f5d1be5a28c in QAction::event(QEvent*) (this=<optimized out>, e=e@entry=0x7fff2a795200)
    at kernel/qaction.cpp:1183
        se = 0x7fff2a795200
#21 0x00007f5d1cd5ac82 in KAction::event(QEvent*) (this=<optimized out>, event=0x7fff2a795200)
    at ../../kdeui/actions/kaction.cpp:131
#22 0x00007f5d1be5e93c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x55ac8c6d1b00, receiver=0x55ac8f96da80, e=0x7fff2a795200) at kernel/qapplication.cpp:4565
        consumed = <optimized out>
#23 0x00007f5d1be65796 in QApplication::notify(QObject*, QEvent*) (this=this@entry=0x7fff2a7963e0, receiver=receiver@entry=0x55ac8f96da80, e=e@entry=0x7fff2a795200) at kernel/qapplication.cpp:4351
        d = <optimized out>
        res = false
#24 0x00007f5d1ce4554a in KApplication::notify(QObject*, QEvent*) (this=0x7fff2a7963e0, receiver=0x55ac8f96da80, eve---Type <return> to continue, or q <return> to quit---
nt=0x7fff2a795200) at ../../kdeui/kernel/kapplication.cpp:311
#25 0x00007f5d1b1708dd in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7fff2a7963e0, receiver=0x55ac8f96da80, event=event@entry=0x7fff2a795200) at kernel/qcoreapplication.cpp:955
        result = false
        cbdata = {0x55ac8f96da80, 0x7fff2a795200, 0x7fff2a7951af}
        d = <optimized out>
        threadData = 0x55ac8c6262d0
        returnValue = <optimized out>
#26 0x00007f5d1be95738 in QShortcutMap::dispatchEvent(QKeyEvent*) (event=0x7fff2a795200, receiver=<optimized out>)
    at ../../src/corelib/kernel/qcoreapplication.h:231
        d = <optimized out>
        curKey = @0x55ac8f96e670: {d = 0x1000055ac}
        current = <optimized out>
        next = 0x55ac8f96e670
        i = <optimized out>
        enabledShortcuts = <optimized out>
        se = 
          {<QEvent> = {_vptr.QEvent = 0x7f5d1c9512f8 <vtable for QShortcutEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b267720 <qt_meta_stringdata_QEvent> "QEvent", data = 0x7f5d1b268120 <qt_meta_data_QEvent>, extradata = 0x0}}, d = 0x0, t = 117, posted = 0, spont = 0, m_accept = 1, reserved = 4468}, sequence = {d = 0x55ac8f96e530}, ambig = false, sid = -279}
#27 0x00007f5d1be95738 in QShortcutMap::dispatchEvent(QKeyEvent*) (this=this@entry=0x55ac8c6d1c28, e=e@entry=0x7fff2a795560) at kernel/qshortcutmap.cpp:887
        d = <optimized out>
        curKey = @0x55ac8f96e670: {d = 0x1000055ac}
        current = <optimized out>
        next = 0x55ac8f96e670
        i = <optimized out>
        enabledShortcuts = <optimized out>
        se = 
          {<QEvent> = {_vptr.QEvent = 0x7f5d1c9512f8 <vtable for QShortcutEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b267720 <qt_meta_stringdata_QEvent> "QEvent", data = 0x7f5d1b268120 <qt_meta_data_QEvent>, extradata = 0x0}}, d = 0x0, t = 117, posted = 0, spont = 0, m_accept = 1, reserved = 4468}, sequence = {d = 0x55ac8f96e530}, ambig = false, sid = -279}
#28 0x00007f5d1be95927 in QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (this=0x55ac8c6d1c28, o=<optimized out>, e=0x7fff2a795560) at kernel/qshortcutmap.cpp:367
        d = <optimized out>
        wasSpontaneous = <optimized out>
        result = QKeySequence::ExactMatch
#29 0x00007f5d1be66b6e in QApplication::notify(QObject*, QEvent*) (this=this@entry=0x7fff2a7963e0, receiver=receiver@entry=0x55ac8f61e9f0, e=e@entry=0x7fff2a795560) at kernel/qapplication.cpp:3989
        d = <optimized out>
        res = false
#30 0x00007f5d1ce4554a in KApplication::notify(QObject*, QEvent*) (this=0x7fff2a7963e0, receiver=0x55ac8f61e9f0, event=0x7fff2a795560) at ../../kdeui/kernel/kapplication.cpp:311
#31 0x00007f5d1b1708dd in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7fff2a7963e0, receiver=receiver@entry=0x55ac8f61e9f0, event=event@entry=0x7fff2a795560) at kernel/qcoreapplication.cpp:955
        result = false
        cbdata = {0x55ac8f61e9f0, 0x7fff2a795560, 0x7fff2a7954bf}
        d = <optimized out>
        threadData = 0x55ac8c6262d0
        returnValue = <optimized out>
#32 0x00007f5d1be5d2e6 in qt_sendSpontaneousEvent(QObject*, QEvent*) (event=event@entry=0x7fff2a795560, receiver=receiver@entry=0x55ac8f61e9f0) at ../../src/corelib/kernel/qcoreapplication.h:234
#33 0x00007f5d1be5d2e6 in qt_sendSpontaneousEvent(QObject*, QEvent*) (receiver=receiver@entry=0x55ac8f61e9f0, event=event@entry=0x7fff2a795560) at kernel/qapplication.cpp:5563
#34 0x00007f5d1bf04463 in QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags<Qt::KeyboardModifier>, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (keyWidget=keyWidget@entry=0x55ac8f61e9f0, grab=grab@entry=172, type=QEvent::KeyPress, code=16777223, modifiers=..., text=..., autorepeat=false, count=1, nativeScanCode=119, nativeVirtualKey=65535, nativeModifiers=0) at kernel/qkeymapper_x11.cpp:1866
        e = 
          {<QKeyEvent> = {<QInputEvent> = {<QEvent> = {_vptr.QEvent = 0x7f5d1c9406f0 <vtable for QKeyEventEx+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b267720 <qt_meta_stringdata_QEvent> "QEvent", data = 0x7f5d1b268120 <qt_meta_data_QEvent>, extradata = 0x0}}, d = 0x7fff2a795560, t = 6, posted = 0, spont = 1, m_accept = 1, reserved = 4494}, modState = {i = 0}}, txt = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 52---Type <return> to continue, or q <return> to quit---
4}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8f957990, static codecForCStrings = 0x0}, k = 16777223, c = 1, autor = 0}, nScanCode = 119, nVirtualKey = 65535, nModifiers = 0}
#35 0x00007f5d1bf04972 in QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (this=0x7fff2a795ad0, keyWidget=0x55ac8f61e9f0, event=0x55ac00000000, grab=<optimized out>) at kernel/qkeymapper_x11.cpp:1836
        code = 16777223
        count = 1
        modifiers = {i = 0}
        type = QEvent::KeyPress
        autor = 176
        text = 
          {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8f957990, static codecForCStrings = 0x0}
        keysym = 65535
        auto_repeat_data = 
          {window = 102761050, keycode = 119 'w', timestamp = 26331014, release = false, error = false}
        curr_autorep = 0
        qic = 0x4a9c1e2136757c00
#36 0x00007f5d1bede5a6 in QApplication::x11ProcessEvent(_XEvent*) (this=0x7fff2a7963e0, event=event@entry=0x7fff2a795ad0) at kernel/qapplication_x11.cpp:3556
        d = 0x55ac8c6d1b00
        loopLevelCounter = {threadData = 0x55ac8c6262d0}
        widget = <optimized out>
        keywidget = <optimized out>
        grabbed = <optimized out>
#37 0x00007f5d1bf07249 in x11EventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55ac8c6dfc90, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:148
        event = 
            {type = 2, xany = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050}, xkey = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, root = 1188, subwindow = 0, time = 26331014, x = 936, y = 630, x_root = 2860, y_root = 722, state = 0, keycode = 119, same_screen = 1}, xbutton = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, root = 1188, subwindow = 0, time = 26331014, x = 936, y = 630, x_root = 2860, y_root = 722, state = 0, button = 119, same_screen = 1}, xmotion = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, root = 1188, subwindow = 0, time = 26331014, x = 936, y = 630, x_root = 2860, y_root = 722, state = 0, is_hint = 119 'w', same_screen = 1}, xcrossing = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, root = 1188, subwindow = 0, time = 26331014, x = 936, y = 630, x_root = 2860, y_root = 722, mode = 0, detail = 119, same_screen = 1, focus = 419430400, state = 0}, xfocus = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, mode = 1188, detail = 0}, xexpose = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, x = 1188, y = 0, width = 0, height = 0, count = 26331014}, xgraphicsexpose = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, drawable = 102761050, x = 1188, y = 0, width = 0, height = 0, count = 26331014, major_code = 0, minor_code = 936}, xnoexpose = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, drawable = 102761050, major_code = 1188, minor_code = 0}, xvisibility = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, state = 1188}, xcreatewindow = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, parent = 102761050, window = 1188, x = 0, y = 0, width = 26331014, height = 0, border_width = 936, override_redirect = 630}, xdestroywindow = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188}, xunmap = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, from_configure = 0}, xmap = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, override_redirect = 0}, xmaprequest = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, parent = 102761050, window = 1188}, xreparent = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, parent = 0, x = 26331014, y = 0, override_redirect = 936}, xconfigure = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, x = 0, y = 0, width = 26331014, height = 0, border_width = 936, above = 3100966390572, override_redirect = 0}, xgravity = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, x = 0, y = 0}, xresizerequest = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, width = 1188, height = 0}, xconfigurerequest = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, parent = 102761050, window = 1188, x = 0, y = 0, width = 26331014, height = 0, border_width = 936, above = 3100966390572, detail = 0, value_mask = 1801439850948198401}, xcirculate = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, event = 102761050, window = 1188, place = 0}, xcirculaterequest = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, parent = 102761050, window = 1188, place = 0}, xproperty = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, atom = 1188, time = 0, state = 26331014}, xselectionclear = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, selection = 1188, time = 0}, xselectionrequest = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, owner = 102761050, requestor = 1188, selection = 0---Type <return> to continue, or q <return> to quit---
, target = 26331014, property = 2705829397416, time = 3100966390572}, xselection = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, requestor = 102761050, selection = 1188, target = 0, property = 26331014, time = 2705829397416}, xcolormap = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, colormap = 1188, c_new = 0, state = 0}, xclient = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, message_type = 1188, format = 0, data = {b = "\206Ǒ\001\000\000\000\000\250\003\000\000v\002\000\000,\v\000", s = {-14458, 401, 0, 0, 936, 0, 630, 0, 2860, 0}, l = {26331014, 2705829397416, 3100966390572, 511101108224, 1801439850948198401}}}, xmapping = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, request = 1188, first_keycode = 0, count = 0}, xerror = {type = 2, display = 0x33e3c, resourceid = 0, serial = 94199578984688, error_code = 90 'Z', request_code = 2 '\002', minor_code = 32 ' '}, xkeymap = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, window = 102761050, key_vector = "\244\004", '\000' <repeats 14 times>, "\206Ǒ\001\000\000\000\000\250\003\000\000v\002\000"}, xgeneric = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, extension = 102761050, evtype = 0}, xcookie = {type = 2, serial = 212540, send_event = 0, display = 0x55ac8c7180f0, extension = 102761050, evtype = 0, cookie = 1188, data = 0x0}, pad = {140037408686082, 212540, 0, 94199578984688, 102761050, 1188, 0, 26331014, 2705829397416, 3100966390572, 511101108224, 1801439850948198401, 0, 0, 0, 0, 1369094286838071296, 1873497445405556736, -3657433088, -72057589759737856, -16777216, 2882303763060621312, 1801439851384406016, 576460752622190592}}
        source = 0x55ac8c6dfc90
        marker = 212541
#38 0x00007f5d14d88f0a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#39 0x00007f5d14d892a0 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#40 0x00007f5d14d8934c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#41 0x00007f5d1b1a0e8e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55ac8c627c30, flags=...) at kernel/qeventdispatcher_glib.cpp:450
        d = 0x55ac8c6e4300
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#42 0x00007f5d1bf073e6 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:207
        d = 0x55ac8c6e4300
        saved_flags = {i = 0}
        returnValue = <optimized out>
#43 0x00007f5d1b16f151 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff2a795eb0, flags=...) at kernel/qeventloop.cpp:149
        d = 0x55ac90752f00
#44 0x00007f5d1b16f4c5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff2a795eb0, flags=...) at kernel/qeventloop.cpp:204
        d = 0x55ac90752f00
        locker = {val = 94199577994296}
#45 0x00007f5d1b175069 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1227
        threadData = 0x55ac8c6262d0
        eventLoop = 
            {<QObject> = {_vptr.QObject = 0x7f5d1b4d49c8 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b2548a0 <qt_meta_stringdata_QObject> "QObject", data = 0x7f5d1b254940 <qt_meta_data_QObject>, extradata = 0x7f5d1b4cd180 <QObject::staticMetaObjectExtraData>}}, static staticMetaObjectExtraData = {objects = 0x0, static_metacall = 0x7f5d1b18b750 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, d_ptr = {d = 0x55ac90752f00}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b25d920 <qt_meta_stringdata_Qt> "Qt", data = 0x7f5d1b261240 <qt_meta_data_Qt>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f5d1b4cd160 <QObject::staticMetaObject>, stringdata = 0x7f5d1b267520 <qt_meta_stringdata_QEventLoop> "QEventLoop", data = 0x7f5d1b267540 <qt_meta_data_QEventLoop>, extradata = 0x7f5d1b4d04a0 <QEventLoop::staticMetaObjectExtraData>}}, static staticMetaObjectExtraData = {objects = 0x0, static_metacall = 0x7f5d1b1d5960 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}}
        returnCode = <optimized out>
#46 0x000055ac8b25b21a in main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at ../../../core/app/main/main.cpp:230
        aboutData = {d = 0x55ac8c682e60}
        options = {d = 0x55ac8c6b8120}
        app = 
          {<QApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x7f5d1d26d908 <vtable for KApplication+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b2548a0 <qt_meta_stringdata_QObject> "QObject", data = 0x7f5d1b254940 <qt_meta_data_QObject>, extradata = 0x7f5d1b4cd180 <QObject::staticMetaObjectExtraData>}}, static staticMetaObjectExtraData = {objects = 0x0, static_metacall = 0x7f5d1b18b750 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, d_ptr = {d = 0x55ac8c6d1b00}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f5d1b25d920 <qt_meta_stringdata_Qt> "Qt", data = 0x7f5d1b261240 <qt_meta_data_Qt>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f5d1b4cd160 <QObject::staticMetaObject>, stringdata = 0x7f5d1b2675c0 <qt_meta_stringdata_QCoreApplication> "QCoreApplication", data = 0x7f5d1b267660 <qt_meta_data_QCoreApplication>, extradata = 0x7f5d1b4d04b0 <QCoreApplication::staticMetaObjectExtraData>}}, static staticMetaObjectExt---Type <return> to continue, or q <return> to quit---B
raData = {objects = 0x0, static_metacall = 0x7f5d1b1d5ab0 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, static self = 0x0}, static staticMetaObject = {d = {superdata = 0x7f5d1b4d4b00 <QCoreApplication::staticMetaObject>, stringdata = 0x7f5d1c50c860 <qt_meta_stringdata_QApplication> "QApplication", data = 0x7f5d1c50caa0 <qt_meta_data_QApplication>, extradata = 0x7f5d1c940360 <QApplication::staticMetaObjectExtraData>}}, static staticMetaObjectExtraData = {objects = 0x0, static_metacall = 0x7f5d1be63460 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}}, static staticMetaObject = {d = {superdata = 0x7f5d1c950980 <QApplication::staticMetaObject>, stringdata = 0x7f5d1cfbf660 <qt_meta_stringdata_KApplication> "KApplication", data = 0x7f5d1cfbf760 <qt_meta_data_KApplication>, extradata = 0x7f5d1d25f030 <KApplication::staticMetaObjectExtraData>}}, static staticMetaObjectExtraData = {objects = 0x0, static_metacall = 0x7f5d1ce454f0 <KApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, static loadedByKdeinit = false, static KApp = 0x7fff2a7963e0, d = 0x55ac8c88c7d0}
        __PRETTY_FUNCTION__ = "int main(int, char**)"
        args = 0x55ac8c6b86d0
        commandLineDBPath = 
          {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8ba58980 <QString::shared_null>, static codecForCStrings = 0x0}
        config = {d = 0x55ac8c890540}
        group = 
            {<KConfigBase> = {_vptr.KConfigBase = 0x7f5d1b9bdf90 <vtable for KConfigGroup+16>}, d = {d = 0x55ac8ca2b040}}
        version = 
          {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8ca35ff0, static codecForCStrings = 0x0}
        mainConfig = 
            {<KConfigBase> = {_vptr.KConfigBase = 0x7f5d1b9bdf90 <vtable for KConfigGroup+16>}, d = {d = 0x55ac8c8c9070}}
        firstAlbumPath = 
          {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8ba58980 <QString::shared_null>, static codecForCStrings = 0x0}
        params = 
            {databaseType = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8caa3910, static codecForCStrings = 0x0}, databaseName = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8ca3d4b0, static codecForCStrings = 0x0}, connectOptions = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x7f5d1b4da180 <QString::shared_empty>, static codecForCStrings = 0x0}, hostName = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x7f5d1b4da180 <QString::shared_empty>, static codecForCStrings = 0x0}, port = -1, internalServer = false, userName = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x7f5d1b4da180 <QString::shared_empty>, static codecForCStrings = 0x0}, password = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capa---Type <return> to continue, or q <return> to quit---
city = 0, reserved = 0, array = {0}}, d = 0x7f5d1b4da180 <QString::shared_empty>, static codecForCStrings = 0x0}, databaseNameThumbnails = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x55ac8ba5899a <QString::shared_null+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 524}, alloc = 0, size = 0, data = 0x7f5d1b4da19a <QString::shared_empty+26>, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x55ac8ca2ace0, static codecForCStrings = 0x0}}
        digikam = 0x55ac8cb9e110
        ret = <optimized out>
Comment 1 caulier.gilles 2015-09-19 21:18:27 UTC

*** This bug has been marked as a duplicate of bug 222974 ***
Comment 2 Dave Gilbert 2015-09-19 21:49:21 UTC
(In reply to Gilles Caulier from comment #1)
> 
> 
> *** This bug has been marked as a duplicate of bug 222974 ***

Are you sure that's the write bug to dupe to - that was closed having been fixed 5 years ago; this is a failure on a current release.
Comment 3 caulier.gilles 2015-09-19 21:56:08 UTC
The problem is relevant of KDirWatch from KDELibs. Look well old bug.
Comment 4 Dave Gilbert 2015-09-19 21:59:24 UTC
(In reply to Gilles Caulier from comment #3)
> The problem is relevant of KDirWatch from KDELibs. Look well old bug.

But since that bug was marked closed/fixed in 4.4 it doesn't sound right to dupe my bug to it, since it's happening on 4.13
Comment 5 Luigi Toscano 2015-09-19 22:50:19 UTC
(In reply to Gilles Caulier from comment #3)
> The problem is relevant of KDirWatch from KDELibs. Look well old bug.

Where is the mention of KDirWatch in the stacktrace? The original bug had:
#6 0x00007f3337b2b10b in findSubEntry (path=<value optimized out>, this=<value optimized out>) at /usr/src/debug/kdelibs-4.3.87svn1070744/kio/kio/kdirwatch_p.h:161

There is no mention of either KDirEntry or findSubEntry in this stacktrace. Moreover, according the reproduce, it happens now with an easy reproducer. Can you please reconsider?
Comment 6 Kevin Kofler 2015-09-19 22:58:20 UTC
This cannot possibly be a duplicate of bug #222974, because (as pointed out by the reporter), that bug was fixed in 4.4.1 and this bug was reported against Fedora 23, which ships kdelibs 4.14.12.
Comment 7 caulier.gilles 2015-09-20 08:33:06 UTC
Look on duplicate bug. There a few files with similar backtrace where KDirWatch is present.

There is no reason to see digiKam crashing while deletion of file. There are plenty of reports relevant of file deletion and KDirWatch. 

When a file is removed, KDirWatch detect changes from hard drive to update database.
Comment 8 Maik Qualmann 2015-09-21 18:13:12 UTC
Created attachment 94667 [details]
editor.patch

This patch fix the timing issue when deleting modified images in the editor.

Maik
Comment 9 caulier.gilles 2015-09-21 20:13:00 UTC
Maik,

Even if i cannot reproduce the race condition crash, the patch sound fine for me.

Gilles Caulier
Comment 10 Maik Qualmann 2015-09-21 20:25:26 UTC
(In reply to Gilles Caulier from comment #9)

> Even if i cannot reproduce the race condition crash...

Is quite possible with faster disk and computer, I commit the patch.

Maik
Comment 11 Maik Qualmann 2015-09-21 20:37:49 UTC
Git commit 5dde5352fa11d31bb77149cc029319f42b0e05ea by Maik Qualmann.
Committed on 21/09/2015 at 20:35.
Pushed by mqualmann into branch 'master'.

apply patch #94667 to fix possible crash when deleting modified image in the image editor
FIXED-IN: 4.14.0

M  +2    -1    NEWS
M  +33   -0    utilities/imageeditor/editor/editorwindow.cpp
M  +1    -0    utilities/imageeditor/editor/editorwindow.h
M  +9    -1    utilities/imageeditor/main/imagewindow.cpp

http://commits.kde.org/digikam/5dde5352fa11d31bb77149cc029319f42b0e05ea
Comment 12 caulier.gilles 2015-09-23 23:05:26 UTC
Git commit dd05243e953a4be34f227ad15522283f4c0dbf93 by Gilles Caulier.
Committed on 23/09/2015 at 23:04.
Pushed by cgilles into branch 'frameworks'.

backport commit #5dde5352fa11d31bb77149cc029319f42b0e05ea from git master to frameworks branch

M  +33   -0    utilities/imageeditor/editor/editorwindow.cpp
M  +1    -0    utilities/imageeditor/editor/editorwindow.h
M  +9    -1    utilities/imageeditor/main/imagewindow.cpp

http://commits.kde.org/digikam/dd05243e953a4be34f227ad15522283f4c0dbf93