Bug 288762

Summary: Digikam crash when closing digikam after mass-tagging images
Product: [Applications] digikam Reporter: Michal Sylwester <msylwester>
Component: Database-MysqlAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR    
Version: 2.4.0   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 2.7.0
Sentry Crash Report:

Description Michal Sylwester 2011-12-11 21:58:30 UTC
Application: digikam (2.4.1)
KDE Platform Version: 4.7.3 (4.7.3)
Qt Version: 4.7.4
Operating System: Linux 3.0.0-14-generic x86_64
Distribution: Ubuntu 11.10

-- Information about the crash:
- What I was doing when the application crashed:

1. Applied new metadata (copyright information) to lots of images (over 10000)
2. Got "applying metadata" (or similar) progress bar
3. Progress bar reached 100% but I could still hear HDD working, and it would not disappear
4. Tried to close digikam
5. Got crash

I have digikam set up to store metadata inside image file. There were similar crashes before, but this is the first time I am able to submit crash report. 

After restarting digikam I used the menu command to write all metadata to files (to make sure it's in sync after crash). It seems that the progress bar is moving much slower, which for me suggests that the previous one was only ment for metadata update in DB, and I crashed it when I tried to interrupt the background metadata write to files by closing digikam.

-- Backtrace:
Application: digiKam (digikam), signal: Segmentation fault
QCoreApplication::removePostedEvents (receiver=0x41ccec0, eventType=0) at kernel/qcoreapplication.cpp:1525
	in kernel/qcoreapplication.cpp
[Current thread is 1 (Thread 0x7f4a80e8ea20 (LWP 2469))]

Thread 4 (Thread 0x7f4a5de86700 (LWP 2518)):
#0  0x00007f4a75f9b034 in __pthread_mutex_lock (mutex=0x7f4a580008b8) at pthread_mutex_lock.c:61
#1  0x00007f4a73c2775f in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f4a73c27f82 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f4a73c28429 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f4a7b483f3e in QEventDispatcherGlib::processEvents (this=0x1460b20, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:424
#5  0x00007f4a7b457cf2 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f4a7b457ef7 in QEventLoop::exec (this=0x7f4a5de85b30, flags=...) at kernel/qeventloop.cpp:201
#7  0x00007f4a7b36f27f in QThread::exec (this=<optimized out>) at thread/qthread.cpp:498
#8  0x00007f4a7b43acbf in QInotifyFileSystemWatcherEngine::run (this=0x145fd90) at io/qfilesystemwatcher_inotify.cpp:248
#9  0x00007f4a7b371d05 in QThreadPrivate::start (arg=0x145fd90) at thread/qthread_unix.cpp:331
#10 0x00007f4a75f98efc in start_thread (arg=0x7f4a5de86700) at pthread_create.c:304
#11 0x00007f4a7a61489d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#12 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f4a5d685700 (LWP 2898)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f4a7b3721ab in wait (time=18446744073709551615, this=0x13e33e0) at thread/qwaitcondition_unix.cpp:88
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x13e2f68, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:160
#3  0x00007f4a7e7496c7 in ?? () from /usr/lib/libdigikamcore.so.2
#4  0x00007f4a7b371d05 in QThreadPrivate::start (arg=0x13e2f50) at thread/qthread_unix.cpp:331
#5  0x00007f4a75f98efc in start_thread (arg=0x7f4a5d685700) at pthread_create.c:304
#6  0x00007f4a7a61489d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f4a2c65f700 (LWP 5971)):
[KCrash Handler]
#6  0x00007f4a5c89249c in mysql_next_result () from /usr/lib/libmysqlclient_r.so.16
#7  0x00007f4a5cc7e1eb in QMYSQLResult::cleanup (this=0x7f4a5802a390) at ../../../sql/drivers/mysql/qsql_mysql.cpp:437
#8  0x00007f4a5cc7e787 in QMYSQLResult::~QMYSQLResult (this=0x7f4a5802a390, __in_chrg=<optimized out>) at ../../../sql/drivers/mysql/qsql_mysql.cpp:415
#9  0x00007f4a5cc7e7c9 in QMYSQLResult::~QMYSQLResult (this=0x7f4a5802a390, __in_chrg=<optimized out>) at ../../../sql/drivers/mysql/qsql_mysql.cpp:417
#10 0x00007f4a80ab111e in ~QSqlQuery (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qsqlquery.cpp:245
#11 QSqlQuery::~QSqlQuery (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qsqlquery.cpp:242
#12 0x00007f4a7e6dfca8 in Digikam::DatabaseCoreBackend::execSql(QString const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QList<QVariant>*, QVariant*) () from /usr/lib/libdigikamcore.so.2
#13 0x00007f4a7e05d823 in Digikam::AlbumDB::setImageCopyrightProperty(long long, QString const&, QString const&, QString const&, Digikam::AlbumDB::CopyrightPropertyUnique) () from /usr/lib/libdigikamdatabase.so.2
#14 0x00007f4a7e0d5b9d in Digikam::ImageCopyright::setSimpleProperty(QString const&, QString const&) () from /usr/lib/libdigikamdatabase.so.2
#15 0x00007f4a7e0d5f8f in Digikam::ImageCopyright::setSource(QString const&) () from /usr/lib/libdigikamdatabase.so.2
#16 0x00007f4a7e0d6c0b in Digikam::ImageCopyright::setFromTemplate(Digikam::Template const&) () from /usr/lib/libdigikamdatabase.so.2
#17 0x00007f4a7e0b9135 in Digikam::ImageInfo::setMetadataTemplate(Digikam::Template const&) () from /usr/lib/libdigikamdatabase.so.2
#18 0x0000000000609c1b in ?? ()
#19 0x0000000000610425 in ?? ()
#20 0x00000000006124f7 in ?? ()
#21 0x00007f4a7b46fa5e in QObject::event (this=0x19af040, e=<optimized out>) at kernel/qobject.cpp:1217
#22 0x00007f4a7be59424 in notify_helper (e=0x4b699e0, receiver=0x19af040, this=0x1286980) at kernel/qapplication.cpp:4486
#23 QApplicationPrivate::notify_helper (this=0x1286980, receiver=0x19af040, e=0x4b699e0) at kernel/qapplication.cpp:4458
#24 0x00007f4a7be5e291 in QApplication::notify (this=0x7fffb2860f60, receiver=0x19af040, e=0x4b699e0) at kernel/qapplication.cpp:4365
#25 0x00007f4a7cb6d126 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#26 0x00007f4a7b458afc in QCoreApplication::notifyInternal (this=0x7fffb2860f60, receiver=0x19af040, event=0x4b699e0) at kernel/qcoreapplication.cpp:787
#27 0x00007f4a7b45c51f in sendEvent (event=0x4b699e0, receiver=0x19af040) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#28 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x4062bb0) at kernel/qcoreapplication.cpp:1428
#29 0x00007f4a7b483a73 in sendPostedEvents () at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#30 postEventSourceDispatch (s=<optimized out>) at kernel/qeventdispatcher_glib.cpp:277
#31 0x00007f4a73c27a5d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f4a73c28258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f4a73c28429 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007f4a7b483ed6 in QEventDispatcherGlib::processEvents (this=0x8fa09b0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#35 0x00007f4a7b457cf2 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#36 0x00007f4a7b457ef7 in QEventLoop::exec (this=0x7f4a2c65eb00, flags=...) at kernel/qeventloop.cpp:201
#37 0x00007f4a7e748dd1 in ?? () from /usr/lib/libdigikamcore.so.2
#38 0x00007f4a7b366795 in QThreadPoolThread::run (this=0x3f91d40) at concurrent/qthreadpool.cpp:106
#39 0x00007f4a7b371d05 in QThreadPrivate::start (arg=0x3f91d40) at thread/qthread_unix.cpp:331
#40 0x00007f4a75f98efc in start_thread (arg=0x7f4a2c65f700) at pthread_create.c:304
#41 0x00007f4a7a61489d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#42 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f4a80e8ea20 (LWP 2469)):
#0  QCoreApplication::removePostedEvents (receiver=0x41ccec0, eventType=0) at kernel/qcoreapplication.cpp:1525
#1  0x00007f4a7b47047d in QObject::~QObject (this=0x41ccec0, __in_chrg=<optimized out>) at kernel/qobject.cpp:951
#2  0x00007f4a61b9a304 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#3  0x00007f4a7b46ad75 in QObjectPrivate::deleteChildren (this=0x1365380) at kernel/qobject.cpp:1955
#4  0x00007f4a7b470349 in QObject::~QObject (this=0x1365220, __in_chrg=<optimized out>) at kernel/qobject.cpp:946
#5  0x00007f4a61b9aa70 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#6  0x00007f4a7b46ad75 in QObjectPrivate::deleteChildren (this=0x12c9350) at kernel/qobject.cpp:1955
#7  0x00007f4a7b470349 in QObject::~QObject (this=0x12c92a0, __in_chrg=<optimized out>) at kernel/qobject.cpp:946
#8  0x00007f4a61b842a2 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#9  0x00007f4a7b46ad75 in QObjectPrivate::deleteChildren (this=0x12c43d0) at kernel/qobject.cpp:1955
#10 0x00007f4a7b470349 in QObject::~QObject (this=0x12c4300, __in_chrg=<optimized out>) at kernel/qobject.cpp:946
#11 0x00007f4a61bb9549 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#12 0x00007f4a7be62e25 in QApplication::~QApplication (this=0x7fffb2860f60, __in_chrg=<optimized out>) at kernel/qapplication.cpp:1168
#13 0x000000000048b0c6 in ?? ()
#14 0x00007f4a7a55430d in __libc_start_main (main=0x48a9a0, argc=3, ubp_av=0x7fffb2861788, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffb2861778) at libc-start.c:226
#15 0x000000000048d265 in _start ()

Reported using DrKonqi
Comment 1 caulier.gilles 2011-12-15 08:13:58 UTC
It crash in Mysql Qt4 driver...

Gilles Caulier
Comment 2 Marcel Wiesweg 2011-12-25 14:01:39 UTC
The operation was not finished, which may explain the crash in a context of unclean shutdown. Debug symbols are missing.
Comment 3 caulier.gilles 2012-06-22 08:50:28 UTC
Official digiKam 2.6.0 release is out since few days now :

http://www.digikam.org/drupal/node/656

Please, check if this entry still valid, or update report accordingly.

Thanks in advance.

Gilles Caulier
Comment 4 Michal Sylwester 2012-06-25 00:58:53 UTC
No reproduction. I'm using SQLite now though, so it may be also the reason. Still, I think it can be closed for now.