Bug 476157 - Crash in assert when importing old digikam db
Summary: Crash in assert when importing old digikam db
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Database-Similarity (show other bugs)
Version: 8.1.0
Platform: Neon Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2023-10-27 14:02 UTC by Jonathan Verner
Modified: 2023-10-28 16:42 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 8.2.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Verner 2023-10-27 14:02:54 UTC
Application: digikam (8.1.0)

Qt Version: 5.15.11
Frameworks Version: 5.111.0
Operating System: Linux 6.2.0-35-generic x86_64
Windowing System: X11
Distribution: KDE neon 5.27
DrKonqi: 5.27.8 [KCrashBackend]

-- Information about the crash:
When using a new installation of digikam on a folder with old photos and db, digikam crashes when initially analyzing images.

The crash can be reproduced every time.

-- Backtrace:
Application: digiKam (digikam), signal: Aborted

[KCrash Handler]
#4  __pthread_kill_implementation (no_tid=0, signo=6, threadid=139726451553856) at ./nptl/pthread_kill.c:44
#5  __pthread_kill_internal (signo=6, threadid=139726451553856) at ./nptl/pthread_kill.c:78
#6  __GI___pthread_kill (threadid=139726451553856, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#7  0x00007f14bac42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f14bac287f3 in __GI_abort () at ./stdlib/abort.c:79
#9  0x00007f14bb491bb3 in qt_message_fatal (message=<synthetic pointer>..., context=...) at global/qlogging.cpp:1919
#10 QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7f1499818b28, msg=msg@entry=0x7f14bb7a3000 "ASSERT: \"%s\" in file %s, line %d") at global/qlogging.cpp:898
#11 0x00007f14bb490ff0 in qt_assert(char const*, char const*, int) (assertion=assertion@entry=0x7f14bdbbad98 "d", file=file@entry=0x7f14bdbc0078 "./core/libs/database/similaritydb/similaritydbaccess.cpp", line=line@entry=103) at global/qglobal.cpp:3392
#12 0x00007f14bda6b10e in Digikam::SimilarityDbAccess::SimilarityDbAccess() (this=this@entry=0x7f1499818b80) at ./core/libs/database/similaritydb/similaritydbaccess.cpp:103
#13 0x00007f14bdb45d27 in Digikam::ItemScanner::commitCopyImageAttributes() (this=0x7f1499818c18) at ./core/libs/database/item/scanner/itemscanner_database.cpp:165
#14 0x00007f14bda7a3b7 in Digikam::CollectionScanner::Private::finishScanner(Digikam::ItemScanner&) (this=0x7f13fc15ef90, scanner=...) at ./core/libs/database/collection/collectionscanner_p.cpp:272
#15 0x00007f14bda7e5f3 in Digikam::CollectionScanner::scanNewFile(QFileInfo const&, int) (this=0x7f14998194a0, info=<optimized out>, albumId=386) at ./core/libs/database/collection/collectionscanner_scan.cpp:1063
#16 0x00007f14bda802cc in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&, bool) (this=0x7f14998194a0, location=..., album=..., checkDate=false) at ./core/libs/database/collection/collectionscanner_scan.cpp:792
#17 0x00007f14bda7ffd5 in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&, bool) (this=0x7f14998194a0, location=..., album=..., checkDate=false) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h:147
#18 0x00007f14bda7ffd5 in Digikam::CollectionScanner::scanAlbum(Digikam::CollectionLocation const&, QString const&, bool) (this=0x7f14998194a0, location=..., album=..., checkDate=false) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qstringbuilder.h:147
#19 0x00007f14bda80b8d in Digikam::CollectionScanner::scanAlbumRoot(Digikam::CollectionLocation const&) (this=0x7f14998194a0, location=...) at ./core/libs/database/collection/collectionscanner_scan.cpp:467
#20 0x00007f14bda81bab in Digikam::CollectionScanner::completeScan() (this=this@entry=0x7f14998194a0) at ./core/libs/database/collection/collectionscanner_scan.cpp:87
#21 0x00007f14bdad555d in Digikam::CoreDbSchemaUpdater::updateV4toV7() (this=0x7f14998198f0) at ./core/libs/database/coredb/coredbschemaupdater.cpp:1243
#22 0x00007f14bdad6d25 in Digikam::CoreDbSchemaUpdater::makeUpdates() (this=0x7f14998198f0) at ./core/libs/database/coredb/coredbschemaupdater.cpp:426
#23 0x00007f14bdad7838 in Digikam::CoreDbSchemaUpdater::startUpdates() (this=0x7f14998198f0) at ./core/libs/database/coredb/coredbschemaupdater.cpp:325
#24 0x00007f14bdad7aa7 in Digikam::CoreDbSchemaUpdater::update() (this=this@entry=0x7f14998198f0) at ./core/libs/database/coredb/coredbschemaupdater.cpp:130
#25 0x00007f14bdada6c0 in Digikam::CoreDbBackend::initSchema(Digikam::CoreDbSchemaUpdater*) (this=<optimized out>, updater=updater@entry=0x7f14998198f0) at ./core/libs/database/coredb/coredbbackend.cpp:55
#26 0x00007f14bdae4851 in Digikam::CoreDbAccess::checkReadyForUse(Digikam::InitializationObserver*) (observer=observer@entry=0x7f14be659bd0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder+16>) at ./core/libs/database/coredb/coredbaccess.cpp:331
#27 0x00007f14be0eafd3 in Digikam::ScanController::run() (this=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>) at ./core/libs/database/utils/scan/scancontroller.cpp:217
#28 0x00007f14bb4cecf3 in operator() (__closure=<optimized out>, __closure=<optimized out>) at thread/qthread_unix.cpp:350
#29 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>, t=<optimized out>) at thread/qthread_unix.cpp:287
#30 QThreadPrivate::start(void*) (arg=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>) at thread/qthread_unix.cpp:310
#31 0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#32 0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 12 (Thread 0x7f14037fe640 (LWP 86845) "digikam"):
#1  __pselect (nfds=nfds@entry=5, readfds=readfds@entry=0x7f14037e4980, writefds=writefds@entry=0x0, exceptfds=exceptfds@entry=0x0, timeout=<optimized out>, timeout@entry=0x7f14037e4970, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/pselect.c:56
#2  0x00007f14a362c03d in usbmuxd_listen_inotify () at /build/libusbmuxd-922SNR/libusbmuxd-2.0.2/src/libusbmuxd.c:923
#3  0x00007f14a362cd88 in usbmuxd_listen () at /build/libusbmuxd-922SNR/libusbmuxd-2.0.2/src/libusbmuxd.c:979
#4  device_monitor (data=<optimized out>) at /build/libusbmuxd-922SNR/libusbmuxd-2.0.2/src/libusbmuxd.c:1107
#5  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#6  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 11 (Thread 0x7f143a7fc640 (LWP 86808) "digikam:gdrv0"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990c5d948) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990c5d948, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990c5d8f8, cond=0x55b990c5d920) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990c5d920, mutex=0x55b990c5d8f8) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990c2b400) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 10 (Thread 0x7f143affd640 (LWP 86807) "digika:traceq0"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990c467a0) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990c467a0, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990c46750, cond=0x55b990c46778) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990c46778, mutex=0x55b990c46750) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990c58f00) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 9 (Thread 0x7f143b7fe640 (LWP 86804) "digikam:sh5"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0fa90) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 8 (Thread 0x7f1433fff640 (LWP 86803) "digikam:sh4"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f090) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 7 (Thread 0x7f143bfff640 (LWP 86802) "digikam:sh3"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f340) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 6 (Thread 0x7f1448fff640 (LWP 86801) "digikam:sh2"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f490) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 5 (Thread 0x7f1454ffd640 (LWP 86800) "digikam:sh1"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f410) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 4 (Thread 0x7f14557fe640 (LWP 86799) "digikam:sh0"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990d0e568) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990d0e568, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990d0e518, cond=0x55b990d0e540) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990d0e540, mutex=0x55b990d0e518) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f3f0) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 3 (Thread 0x7f1455fff640 (LWP 86798) "digikam:disk$0"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b990ca8118) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b990ca8118, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b990ca80c8, cond=0x55b990ca80f0) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b990ca80f0, mutex=0x55b990ca80c8) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f145610f89d in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../src/c11/impl/threads_posix.c:135
#6  0x00007f14560bfb0b in util_queue_thread_func (input=input@entry=0x55b990d0f200) at ../src/util/u_queue.c:290
#7  0x00007f145610f7cb in impl_thrd_routine (p=<optimized out>) at ../src/c11/impl/threads_posix.c:67
#8  0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#9  0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 2 (Thread 0x7f145d628640 (LWP 86796) "QDBusConnection"):
#1  0x00007f14ac9761f6 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f14ac91e3e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f14bb715dee in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f1458000b70, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#4  0x00007f14bb6bb1ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f145d616a50, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#5  0x00007f14bb4cda82 in QThread::exec() (this=this@entry=0x7f14ba7fed80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#6  0x00007f14ba7860eb in QDBusConnectionManager::run() (this=0x7f14ba7fed80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ./src/dbus/qdbusconnection.cpp:179
#7  0x00007f14bb4cecf3 in operator() (__closure=<optimized out>, __closure=<optimized out>) at thread/qthread_unix.cpp:350
#8  (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>, t=<optimized out>) at thread/qthread_unix.cpp:287
#9  QThreadPrivate::start(void*) (arg=0x7f14ba7fed80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:310
#10 0x00007f14bac94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#11 0x00007f14bad26a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 1 (Thread 0x7f14998e2a80 (LWP 86788) "digikam"):
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x55b99155c3d0) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55b99155c3d0, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007f14bac93a41 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55b99155c380, cond=0x55b99155c3a8) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55b99155c3a8, mutex=0x55b99155c380) at ./nptl/pthread_cond_wait.c:627
#5  0x00007f14bb4d4d2b in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55b99155c380) at thread/qwaitcondition_unix.cpp:146
#6  QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x7f145000c778, mutex=mutex@entry=0x7f145000c758, deadline=...) at thread/qwaitcondition_unix.cpp:225
#7  0x00007f14bb4ce9e9 in QThread::wait(QDeadlineTimer) (this=this@entry=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>, deadline=...) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:294
#8  0x00007f14be0efdd3 in Digikam::ScanController::shutDown() (this=this@entry=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>) at ./core/libs/database/utils/scan/scancontroller_stop.cpp:123
#9  0x00007f14be0eac0a in Digikam::ScanController::~ScanController() (this=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>, __in_chrg=<optimized out>) at ./core/libs/database/utils/scan/scancontroller.cpp:111
#10 0x00007f14be0eacfd in Digikam::ScanControllerCreator::~ScanControllerCreator() (this=<optimized out>, __in_chrg=<optimized out>) at ./core/libs/database/utils/scan/scancontroller_p.h:168
#11 Holder::~Holder() (this=<optimized out>, __in_chrg=<optimized out>) at ./core/libs/database/utils/scan/scancontroller.cpp:41
#12 0x00007f14bac45495 in __run_exit_handlers (status=1, listp=0x7f14bae19838 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at ./stdlib/exit.c:113
#13 0x00007f14bac45610 in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:143
#14 0x00007f145d6c3dcd in QXcbConnection::processXcbEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b990aca440, flags=...) at ./src/plugins/platforms/xcb/qxcbconnection.cpp:1047
#15 0x00007f145d6f4f57 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at ./src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:103
#16 0x00007f14ac920d3b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007f14ac976258 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007f14ac91e3e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007f14bb715d78 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b990c257c0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#20 0x00007f14bb6bb1ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b990f855d0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#21 0x00007f14be0ec8e9 in Digikam::ScanController::databaseInitialization() (this=0x7f14be659bc0 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qflags.h:121
#22 0x00007f14be1a5c6b in Digikam::AlbumManager::setDatabase(Digikam::DbEngineParameters const&, bool, QString const&, bool) (this=0x7f14be659e50 <Digikam::(anonymous namespace)::Q_QGS_creator::innerFunction()::holder>, params=..., priority=<optimized out>, suggestedAlbumRoot=..., ignoreDisappearedLocations=ignoreDisappearedLocations@entry=false) at ./core/libs/album/manager/albummanager_database.cpp:195
#23 0x000055b98f11a74d in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ./core/app/main/main.cpp:397
[Inferior 1 (process 86788) detached]

Reported using DrKonqi
Comment 1 caulier.gilles 2023-10-27 14:09:48 UTC
Can you reproduce the crash using the Linux AppImage bundle 8.2.0 pre-release available here :

https://files.kde.org/digikam/
Comment 2 Maik Qualmann 2023-10-27 14:45:07 UTC
The crash is possible, the scanning process can be started before the similarity database has been initialized. In commitCopyImageAttributes() it crashes. I'll fix it.

Maik
Comment 3 Maik Qualmann 2023-10-27 20:24:36 UTC
Git commit 7c7a6406839ed9c233d14bf935b642cb96af6425 by Maik Qualmann.
Committed on 27/10/2023 at 22:23.
Pushed by mqualmann into branch 'master'.

fix race condition with uninitialized similarity database
Related: bug 430858
FIXED-IN: 8.2.0

M  +1    -1    NEWS
M  +5    -5    core/libs/album/manager/albummanager_database.cpp
M  +2    -2    core/libs/database/utils/scan/scancontroller.cpp
M  +9    -0    core/libs/database/utils/scan/scancontroller.h
M  +11   -0    core/libs/database/utils/scan/scancontroller_start.cpp

https://invent.kde.org/graphics/digikam/-/commit/7c7a6406839ed9c233d14bf935b642cb96af6425
Comment 4 Jonathan Verner 2023-10-28 16:42:19 UTC
WOW!!! That was a quick fix. Thank you!!!