darktable-org / darktable-org/darktable

New directory import glitches on MacOS

Open
#19,482 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

no-issue-activity
Dominant language
C
Stars
13.1k
Forks
1.4k
Avg merge
22h 14m
Merged PRs (30d)
198

Description

Is there an existing issue for this?
  • I checked and did not find my issue in the already reported ones
Describe the bug

Duplicated images appearing during and after import done with a command like /Applications/darktable.app/Contents/MacOS/darktable ~/Photos/2025/2025.10.05/nef/.
The target directory contains several hundred uncompressed NEFs.

On the first import (before there were any .xmp-s generated), the output looks like

this
 /Applications/darktable.app/Contents/MacOS/darktable ~/Photos/2025/2025.10.05/nef/

(darktable:34158): Gtk-CRITICAL **: 02:20:16.125: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed

(darktable:34158): Gdk-CRITICAL **: 02:20:18.827: gdk_window_set_cursor: assertion 'GDK_IS_WINDOW (window)' failed
     3.6408 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 223
     5.3537 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 231
     5.4240 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 244
     5.5041 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 258
     6.5713 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 507
     6.6256 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 521
     6.8794 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 571
     7.8313 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 768
     7.9137 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 780
     8.2670 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 849
     8.6652 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 922
     8.9348 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 967
     9.0547 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 989
     9.4883 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1072
    10.0271 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1151
    10.3596 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1205
    10.3730 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1207
    10.5584 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1225
    11.1419 [image_cache_write_release] from `(null)' sqlite3 error 19 (FOREIGN KEY constraint failed) for imgid 1337

On the consequential runs, the console log looks like

this
/Applications/darktable.app/Contents/MacOS/darktable ~/Photos/2025/2025.10.05/nef/
     0.0017 [dt starting]

(darktable:34306): Gtk-CRITICAL **: 02:20:35.514: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed

(darktable:34306): Gdk-CRITICAL **: 02:20:38.026: gdk_window_set_cursor: assertion 'GDK_IS_WINDOW (window)' failed
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": not an error
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5846, function dt_database_release_transaction(), query "RELEASE SAVEPOINT trx1": no such savepoint: trx1
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5806, function dt_database_start_transaction(), query "BEGIN TRANSACTION": cannot start a transaction within a transaction
sqlite3 error: /Users/runner/work/darktable/darktable/src/src/common/database.c:5839, function dt_database_release_transaction(), query "COMMIT TRANSACTION": cannot commit - no transaction is active

In both occasions, the total amount of imported files is higher than the actual number of NEF files in the directory. In the cases above, instead of 1064 dt imported 1337 on the first attempt, and 1276 on second run.

Steps to reproduce

Use the attached script to reproduce. It depends on seq, xargs and ImageMagick utilities. Reproduced the issue even with 200 files.

run_test.sh

Expected behavior

Import files normally without duplicates

Logfile | Screenshot | Screencast
Image Image Image
Commit

No response

Where did you obtain darktable from?

darktable.org / GitHub release

darktable version

5.2.1

What OS are you using?

Mac

What is the version of your OS?

15.6.1 (24G90)

Describe your system

Model Name: MacBook Pro
Model Identifier: Mac15,7
Model Number: Z1AK001DLB/A
Chip: Apple M3 Pro
Total Number of Cores: 12 (6 performance and 6 efficiency)
Memory: 36 GB
System Firmware Version: 11881.140.96
OS Loader Version: 11881.140.96

Are you using OpenCL GPU in darktable?

Yes

If yes, what is the GPU card and driver?

Apple M3 pro

Please provide additional context if applicable. You can attach files too, but might need to rename to .txt or .zip

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Run the attached run_test.sh reproduction and inspect src/src/common/database.c, especially dt_database_start_transaction() and dt_database_release_transaction(), which are named in the logs. Compare the imported count with the source NEF count across repeated imports; done means the directory imports without duplicate images or transaction and foreign-key errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, macos, shell, sqlite
Domain
databases, desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.