I currently have a reproducible hang in the lighttable. Version 3.2.1 of darktable in Ubuntu 20.04. A possible workaround is described below.
- Open Darktable - Images matching the filters last set are displayed - Reset the collect module - Darktable hangs - Expected: All images are shown (and darktable does not hang) Setting specific other filters in the collect module works fine, e.g. I can open an individual previous film roll without any problem. I suspected based on the logging (below) is that it's hanging whenever the collect module matches a specific image (#4079) that's broken. I opened the library.db in sqlitebrowser, and looked at the images table. There was indeed no entry with id 4079, but the rows 4077 and 4080 referred to group_id 4079. On a whim I changed the group_id of 4077 to 4077 etc. Restarting darktable resulted in the same error but with a different id. In fact the same inconsistency happened with a few more ids, I "fixed" them with the same approach and after that, the bug did not trigger anymore. Here's a screenshot of (a backup of) the corrupted db: https://imgur.com/a/m7UdD9W The first 8 ids are affected. I have to wonder what happened to image 4079, 4084, etc. Or worse, maybe other images (db rows) are missing, but don't trigger a crash because they are not part of a group... Cheers Moritz strace spams the following line over and over again: clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=5000}, 0x7fff9515da80) = 0 Last couple of lines of darktable -d all, of which only [image_cache_allocate] failed to open image 4079 from database: no more rows available stands out: 130,233841 [sql] /usr/src/packages/BUILD/src/common/image_cache.c:39, function dt_image_cache_allocate(): prepare "SELECT id, group_id, film_id, width, height, filename, maker, model, lens, exposure, aperture, iso, focal_length, datetime_taken, flags, crop, orientation, focus_distance, raw_parameters, longitude, latitude, altitude, color_matrix, colorspace, version, raw_black, raw_maximum, aspect_ratio, exposure_bias, import_timestamp, change_timestamp, export_timestamp, print_timestamp FROM main.images WHERE id = ?1" [image_cache_allocate] failed to open image 4079 from database: no more rows available 130,234003 [sql] /usr/src/packages/BUILD/src/dtgtk/thumbnail.c:104, function _image_update_group_tooltip(): prepare "SELECT id, version, filename FROM main.images WHERE group_id = ?1" 130,234087 [sql] /usr/src/packages/BUILD/src/common/image.c:222, function dt_image_full_path(): prepare "SELECT folder || '/' || filename FROM main.images i, main.film_rolls f WHERE i.film_id = f.id and i.id = ?1" 130,234162 [sql] /usr/src/packages/BUILD/src/common/image.c:250, function _image_local_copy_full_path(): prepare "SELECT folder || '/' || filename FROM main.images i, main.film_rolls f WHERE i.film_id = f.id AND i.id = ?1" 130,234348 [sql] /usr/src/packages/BUILD/src/common/history.c:1488, function dt_history_hash_get_status(): prepare "SELECT CASE WHEN basic_hash == current_hash THEN 1 WHEN auto_hash == current_hash THEN 2 WHEN (basic_hash IS NULL OR current_hash != basic_hash) AND (auto_hash IS NULL OR current_hash != auto_hash) THEN 4 ELSE 1 END AS status FROM main.history_hash WHERE imgid = 4077" 130,234421 [sql] /usr/src/packages/BUILD/src/common/history.c:858, function dt_history_get_items_as_string(): prepare "SELECT operation, enabled, multi_name FROM main.history WHERE imgid=?1 ORDER BY num DESC" 130,235337 [sql] /usr/src/packages/BUILD/src/common/image_cache.c:39, function dt_image_cache_allocate(): prepare "SELECT id, group_id, film_id, width, height, filename, maker, model, lens, exposure, aperture, iso, focal_length, datetime_taken, flags, crop, orientation, focus_distance, raw_parameters, longitude, latitude, altitude, color_matrix, colorspace, version, raw_black, raw_maximum, aspect_ratio, exposure_bias, import_timestamp, change_timestamp, export_timestamp, print_timestamp FROM main.images WHERE id = ?1" 130,235487 [sql] /usr/src/packages/BUILD/src/common/history.c:1488, function dt_history_hash_get_status(): prepare "SELECT CASE WHEN basic_hash == current_hash THEN 1 WHEN auto_hash == current_hash THEN 2 WHEN (basic_hash IS NULL OR current_hash != basic_hash) AND (auto_hash IS NULL OR current_hash != auto_hash) THEN 4 ELSE 1 END AS status FROM main.history_hash WHERE imgid = 4080" 130,235984 [sql] /usr/src/packages/BUILD/src/common/history.c:858, function dt_history_get_items_as_string(): prepare "SELECT operation, enabled, multi_name FROM main.history WHERE imgid=?1 ORDER BY num DESC" ____________________________________________________________________________ darktable user mailing list to unsubscribe send a mail to [email protected]
