Skip to content

development version crashes intermittently on startup #21035

@jdchristensen

Description

@jdchristensen

Is there an existing issue for this?

  • I checked and did not find my issue in the already reported ones

Describe the bug

I tried a development build to test #21033. It crashes about 10-20% of the time after closing the new welcome dialog. (Tested with empty config dir.) I have attached a non-debug backtrace for this.

I rebuilt on master, without the small changes in #21033, and with debug symbols. Now I can't reproduce that crash, but around 5-10% of the time I get a crash earlier, while the splash screen is being displayed. The crash varies from a free error to a SIGSEGV. I have attached one backtrace. The version for this is 5.5.0+1283~g4b146e78f7.

The gi-man comment in PR #20456 ("I also had a random segfault on my first start that is no longer happening") could be the same issue.

Steps to reproduce

Start darktable with a fresh config dir, and close the welcome window when it appears. Repeat if no crash.

Expected behavior

No response

Logfile | Screenshot | Screencast

welcome-backtrace.txt
splash_backtrace.txt

Commit

No response

Where did you obtain darktable from?

self compiled

darktable version

5.5.0+1283~g4b146e78f7

What OS are you using?

Linux

What is the version of your OS?

Ubuntu 24.04

Describe your system

Linux x86_64, Ubuntu 24.04 (Noble), GTK 3.24, Gnome, X11.

Are you using OpenCL GPU in darktable?

Yes

If yes, what is the GPU card and driver?

Intel UHD Graphics (TigerLake-H GT1), integrated, driver i915 and NVIDIA GeForce RTX 3050 Ti Laptop GPU, discrete, driver nvidia version 580.142

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

I have no idea if this is accurate, but here is what Claude Code said about the welcome crash:

The crash is in GTK's widget disposal chain, triggered by destroying the welcome screen window. The free() is called on an address in the shared library mapping range (0x7ffff71c6b40), not the heap — consistent with a GLib slice-allocated pointer being freed via the wrong allocator.

About the splash screen crash:

Found it. script_manager.lua creates GTK widgets at module load time — dt.new_widget("entry") at lines 1427 and 1433, plus many others throughout. When luarc does require "tools/script_manager" from the Lua background thread during the splash screen phase, all those widget constructors run immediately.

The backtrace shows get_widget_params calling gtk_widget_new for an entry widget (frame #16: widget_type = <entry_type>). The crash: realloc(): invalid pointer on 0x7ffff71c6b40 — the same address as in the welcome screen crash, just a different allocator operation (realloc vs free).

That address appearing in both crashes is the key clue. It points to a GLib-internal pointer (likely in the type system's instance allocation tables) that's been corrupted or is pointing into shared-library address space rather than the heap. The two crashes are probably symptoms of the same root corruption, just hitting it at different points.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions