Bug 180570 - Crash when changing folder during rating
Summary: Crash when changing folder during rating
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Tags-Rating (show other bugs)
Version: 0.10.0
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-01-13 18:00 UTC by Martin Eriksson
Modified: 2017-08-10 19:49 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 0.10.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Eriksson 2009-01-13 18:00:36 UTC
Version:           0.10.0-rc1 (rev.: 891281) (using KDE 4.1.3)
OS:                Linux
Installed from:    Ubuntu Packages

I have checked the option to write rating to file.
I select multiple files and set a rating, during the progress i press another folder.
The application then crasches.


Application: digiKam (digikam), signal SIGSEGV
[Thread debugging using libthread_db enabled]
[New Thread 0x7f42c90776f0 (LWP 27521)]
[New Thread 0x44194950 (LWP 27538)]
[New Thread 0x43993950 (LWP 27537)]
[New Thread 0x43192950 (LWP 27536)]
[New Thread 0x40cd9950 (LWP 27529)]
[New Thread 0x41785950 (LWP 27528)]
[New Thread 0x42991950 (LWP 27527)]
[New Thread 0x42190950 (LWP 27522)]
[KCrash handler]
#5  0x00007f42be1d90d6 in __dynamic_cast () from /usr/lib/libstdc++.so.6
#6  0x00000000005e2ebc in Digikam::AlbumIconView::slotAssignRating (
    this=0x2a64230, rating=3)
    at /home/martin/down/svn/graphics/digikam/digikam/albumiconview.cpp:2324
#7  0x000000000066a94e in Digikam::DigikamView::slotAssignRatingThreeStar (
    this=0x2b50310)
    at /home/martin/down/svn/graphics/digikam/digikam/digikamview.cpp:1544
#8  0x000000000067496d in Digikam::DigikamView::qt_metacall (this=0x2b50310, 
    _c=QMetaObject::InvokeMetaMethod, _id=66, _a=0x7fffd10be7a0)
    at /home/martin/down/svn/graphics/build/digikam/digikam/digikamview.moc:288
#9  0x00007f42c8bcd134 in QMetaObject::activate ()
   from /usr/lib/libQtCore.so.4
#10 0x00007f42c2d88f57 in QAction::triggered () from /usr/lib/libQtGui.so.4
#11 0x00007f42c2d89720 in QAction::activate () from /usr/lib/libQtGui.so.4
#12 0x00007f42c2d8cd17 in QAction::event () from /usr/lib/libQtGui.so.4
#13 0x00007f42c2de5b63 in QWidgetAction::event () from /usr/lib/libQtGui.so.4
#14 0x00007f42c2d8ec3d in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#15 0x00007f42c2d969ba in QApplication::notify () from /usr/lib/libQtGui.so.4
#16 0x00007f42c8234fcb in KApplication::notify () from /usr/lib/libkdeui.so.5
#17 0x00007f42c8bb8d61 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#18 0x00007f42c2dc420d in ?? () from /usr/lib/libQtGui.so.4
#19 0x00007f42c2dc5b3c in ?? () from /usr/lib/libQtGui.so.4
#20 0x00007f42c2d979e2 in QApplication::notify () from /usr/lib/libQtGui.so.4
#21 0x00007f42c8234fcb in KApplication::notify () from /usr/lib/libkdeui.so.5
#22 0x00007f42c8bb8d61 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#23 0x00007f42c2e1d5c4 in ?? () from /usr/lib/libQtGui.so.4
#24 0x00007f42c2e1f8a7 in ?? () from /usr/lib/libQtGui.so.4
#25 0x00007f42c2df9390 in QApplication::x11ProcessEvent ()
   from /usr/lib/libQtGui.so.4
#26 0x00007f42c2e212c4 in ?? () from /usr/lib/libQtGui.so.4
#27 0x00007f42bd4efd3b in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
#28 0x00007f42bd4f350d in ?? () from /usr/lib/libglib-2.0.so.0
#29 0x00007f42bd4f36cb in g_main_context_iteration ()
   from /usr/lib/libglib-2.0.so.0
#30 0x00007f42c8be115f in QEventDispatcherGlib::processEvents ()
   from /usr/lib/libQtCore.so.4
#31 0x00007f42c2e20a6f in ?? () from /usr/lib/libQtGui.so.4
#32 0x00007f42c8bb7682 in QEventLoop::processEvents ()
   from /usr/lib/libQtCore.so.4
#33 0x00007f42c8bb780d in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#34 0x00007f42c8bb9cbd in QCoreApplication::exec ()
   from /usr/lib/libQtCore.so.4
#35 0x00000000006d8ce3 in main (argc=4, argv=0x7fffd10c0a88)
    at /home/martin/down/svn/graphics/digikam/digikam/main.cpp:188
#0  0x00007f42bdc31621 in nanosleep () from /lib/libc.so.6
Comment 1 caulier.gilles 2009-01-13 21:27:20 UTC
I think than crash appears in libexiv2. Which version you use (see Help/component info for details).

Which image file crash digiKam in this case : JPEG, RAW, PNG ?

Gilles Caulier
Comment 2 Martin Eriksson 2009-01-13 21:38:06 UTC
(In reply to comment #1)
> I think than crash appears in libexiv2. Which version you use (see
> Help/component info for details).
> 
> Which image file crash digiKam in this case : JPEG, RAW, PNG ?
> 
> Gilles Caulier
> 

exiv2 -V
exiv2 0.18

I have tried with JPEG and NEF, crash in both cases.
Comment 3 caulier.gilles 2009-01-14 06:14:50 UTC
Ok,

Can you try to change rating using Exiv command line tool on JPEG image ?

Also, can you attach a jpeg image to this file to be able to reproduce the problem here...

Gilles Caulier

Note: Andreas, i CC you for info.
Comment 4 Marcel Wiesweg 2009-01-14 09:45:51 UTC
SVN commit 910771 by mwiesweg:

Store list of ImageInfos, do not keep accessing the current icon items while calling kapp->processEvents.
(Interestingly we had the same crash for assigning tags and fixed it already ;-) )

BUG: 180570

 M  +19 -17    albumiconview.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=910771
Comment 5 Marcel Wiesweg 2009-01-14 09:47:42 UTC
Gilles, I think this crash is not in exiv2, but happens when the folder is changed from within kapp->processEvents (replacing icon items) and the rating loop continues to access the old, deleted items.
Comment 6 caulier.gilles 2009-01-14 09:50:15 UTC
Ok, 

I didn't have see this case...

Gilles
Comment 7 caulier.gilles 2009-01-14 09:53:36 UTC
Marcel,

User can change rating from thumbbar now (preview, editor, and light table). This patch must be apply in these part too (imagepreviewbar and lighttablebar)?

Gilles
Comment 8 Marcel Wiesweg 2009-01-14 14:37:56 UTC
This is about ImagePreviewBar::slotEditRatingFromItem and LighttableBar::slotAssignRating?
This code is fine, there is only one image edited at a time. Here there was a loop, in from inside this loop processEvents was called, where anything can happen, including removal of all current icon items.