Skip to content

CrealityPrint Linux AppImage aborts on every startup via std::terminate right after wxLocale init — reproduces across 7.0.0, 7.1.1, and 7.2.1 #607

Open

Description

@mrich022687

Environment

  • OS: Arch Linux (Omarchy), kernel 7.1.8-arch1-3
  • Desktop: Hyprland (Wayland)
  • Reproduces identically on three separate CrealityPrint releases, ruling out a single-version regression:
    • CrealityPrint-V7.0.0.4127-x86_64-Release.AppImage — crashed on 2026-08-31 and 9x on 2026-09-03
    • CrealityPrint-V7.1.1.4472-x86_64-Release.AppImage (sha256 cf9daa14dda8168c131f504c875ec089b498db3a034dcb7789ce5c05b73f98f0) — crashed on 2026-09-05
    • CrealityPrint-V7.2.1.5476-x86_64-Release.AppImage, i.e. the current latest release (sha256 b28f66c25d0c6652ed6ae49d0766780f46a5b839b93ce1968e639823e1f6e2f3) — crashed on 2026-09-05
  • Launched both by double-clicking a .gcode file in Nautilus and with no file argument at all — makes no difference

What happens

Every launch of the AppImage aborts (SIGABRT) within ~3 seconds of starting, before the main window ever appears. This is 100% reproducible — 13 recorded crashes across three separate days (2026-08-31, 2026-09-03 x9, 2026-09-05 x3) and three different app versions, never a single successful launch.

Evidence

App's own debug log (~/.config/Creality/Creality Print/7.0/log/debug_*.log.0) stops at the same point on every single run, with or without a file argument:

[warning] GUI_Run: single_instance setting=false
[warning] GUI_Run: instance_check returned false (no other instance).
[warning] GUI_Run: argc=2, argv=[.../CrealityPrint, /path/to/file.gcode]
[warning] GUI_Run: truncating argv to keep only argv[0] before wxEntry() (this may drop parameters)
[warning] OnInit memory total_bytes 0 memory available_bytes 0
[warning] load_language: wxLocale initialized. canonical=en_US, locale=English (United States), dict_lang=278, initial=true

Nothing further is logged — the process aborts immediately after this line.

One of the crash logs (2026-09-03 19:51:29) additionally shows, just before the locale line:

[error] add_msg_content invalid font detected gui_ok=true mono_ok=false parent=0x7ffc86590690 mainframe=0 tid=140219963003072 dark_mode=true

This suggests the crash may be related to font/GTK-theme detection during wx GUI initialization under a dark-mode / non-standard desktop environment (Hyprland, in this case), though I can't confirm the exact throw site (see below).

Coredump backtrace (coredumpctl info, systemd-coredump on Arch):

Signal: 6 (ABRT) si_code: SI_TKILL
Stack trace of thread (crashing):
#0  abort (libc.so.6 + 0x256ea)
#1  n/a (libstdc++.so.6 + 0x9ac54)
#2  n/a (libstdc++.so.6 + 0xb581a)
#3  _ZSt9terminatev (libstdc++.so.6 + 0x9a5ed)   <- std::terminate()
#4  n/a (CrealityPrint + 0x1ed0dae)              <- inside the app binary

This confirms the abort is reached via std::terminate() — i.e. an unhandled C++ exception (or an explicit terminate call), not a segfault or memory corruption. Frame #4 is inside the app's own binary; no debug symbols are published for the release build, so I can't name the exact function, only the byte offset (+0x1ed0dae) within the binary shipped in this release.

Not a resource issue: 14 GB RAM with 10+ GB free at crash time, no OOM-killer entries in the system journal, no other process activity around the crash.

Steps to reproduce

  1. On Arch/Omarchy + Hyprland, download any recent Linux AppImage release (tested: 7.0.0, 7.1.1, 7.2.1), chmod +x, run it.
  2. Observe it exit almost immediately with SIGABRT, no window ever shown.
  3. Reproduces identically whether launched bare or with a .gcode file path as an argument, and across all three versions tested.

Request

Since this reproduces across three separate releases spanning several months of development, it looks like a standing incompatibility with this environment rather than a recent regression. Could someone confirm whether this is a known issue on non-GNOME/KDE Wayland compositors (Hyprland specifically), and if there's a debug-symbol build available so the exact throw site in frame #4 can be identified? Happy to provide the full coredump or run additional diagnostics if useful.

Activity

  1. pykekaisora commented on Sep 6, 2026

    @pykekaisora

    Hi there, I just reinstalled Omarchy Quattro to have a clean experience. I did have an error regarding fonts as well. can you try and run the command given and see if it helps you too?

    gsettings set org.gnome.desktop.interface font-name 'Noto Sans 11'
    
  2. dellipse commented on Sep 12, 2026

    @dellipse

    I can confirm this exact crash independently on Omarchy + Hyprland as well, and have some additional data that might help narrow down the cause.

    Confirmed across two separate distributions of the same build (7.2.1.5476), both crashing identically, 100% reproducible on every launch, before the main window ever appears:

    • AUR creality-print-bin package (native install to /opt/creality-print)
    • Official upstream AppImage (CrealityPrint-V7.2.1.5476-x86_64-Release.AppImage, downloaded directly from this repo's releases)

    Fuller backtrace — I had the creality-print-bin-debug package installed locally, which resolved function names past frame #4:

    abort()
    std::terminate()
    Slic3r::GUI::Plater::priv::~priv()
    Slic3r::GUI::Plater::~Plater()
    wxWindowBase::DestroyChildren()
    wxWindow::~wxWindow()
    Notebook::~Notebook()
    wxWindowBase::DestroyChildren()
    wxWindow::~wxWindow()
    Slic3r::GUI::MainFrame::MainFrame()   <- still inside the constructor
    Slic3r::GUI::GUI_App::on_init_inner(bool)
    Slic3r::GUI::GUI_App::OnInit()
    

    So the exception/terminate happens while MainFrame's constructor is still building child windows — the stack is already unwinding through Notebook/Plater destruction when std::terminate() fires. My captured stderr on both crashes reads terminate called without an active exception (not "after throwing an instance of ..."), which usually points to a std::thread (or similar joinable RAII handle) being destroyed while still joinable, rather than a plain thrown exception. I can't name the exact object without full DWARF line tables, but this is a more specific lead than "an exception was thrown somewhere."

    Window-manager correlation (from the separate creality-print-bin AUR package's comment thread): other users report the identical crash under sway and qtile (both tiling), while it works under Plasma on X11 or Wayland (floating). That matches what we're both seeing on Hyprland — also a dynamic tiling Wayland compositor. This looks like a tiling-vs-floating WM incompatibility rather than anything Arch/Omarchy-specific.

    Most actionable data point: on this same machine, the official Linux Flatpak (CrealityPrint-Linux-flatpak_V7.2.1-Release_x86_64.flatpak, same 7.2.1.5476 build) does not crash — it launches cleanly under Hyprland, full main window and all. The only difference is the GNOME 50 Flatpak runtime sandboxing the GTK/wxWidgets stack vs. the AppImage/native build talking to the host compositor directly. That narrows the search space considerably — whatever differs between "GTK/wx inside the Flatpak's GNOME Platform sandbox" and "GTK/wx talking directly to a tiling Wayland compositor" is likely where this lives. One plausible link: your debug log's add_msg_content invalid font detected ... dark_mode=true line right before the crash — a Flatpak's portal layer would answer that kind of desktop-integration/theme query very differently than a direct GTK call to Hyprland.

    Given this reproduces across 6.x–7.2.1 (per the AUR thread) and now two independent reports here, it looks like a real, long-standing incompatibility rather than an isolated config problem. Happy to pull a full debuginfo-backed backtrace or run other diagnostics if that would help pin the exact throw site.

  3. sling86 commented on Sep 14, 2026

    @sling86

    Root cause found, with a per-app workaround that doesn't touch system libraries.

    This is not a tiling-WM problem. It's a FreeType symbol collision in the AppImage, and the trigger is a variable font.

    The mechanism

    The CrealityPrint executable statically links its own FreeType and exports its symbols from the binary:

    $ nm -D --defined-only squashfs-root/bin/CrealityPrint | grep FT_
    0000000004685270 T FT_Done_Face
    000000000468ee50 T FT_Init_FreeType
    

    The executable's symbols take precedence in the dynamic linker's global lookup scope, so the host cairo/pango/GTK stack binds FT_* to the app's bundled copy while /usr/lib/libfreetype.so.6 (2.14.3 here) keeps calling its own internals. Two FreeType versions end up sharing FT_Face objects with different struct layouts.

    That only faults on variable fonts, because they are the only ones that reach FT_Set_Var_Design_Coordinates / tt_apply_mvar. Caught in a second core dump with the split visible in one stack:

    #0  tt_apply_mvar ()                      <- resolved inside the app binary
    #1  FT_Set_Var_Design_Coordinates ()      <- from /usr/lib/libfreetype.so.6
    #2-#6  cairo
    #7-#16 pango
    #17 wxCairoContext::GetTextExtent(...)
    #18 wxGCDCImpl::DoGetTextExtent(...)
    #19 Button::messureSize()
    

    Corrupt text extents then produce ~91x gtk_widget_set_size_request: assertion 'width >= -1' failed, the app's own font check fires (add_msg_content invalid font detected gui_ok=true mono_ok=false), MainFrame construction is abandoned, the half-built Plater is destroyed, and Plater::priv::~priv() destroys a still-joinable std::thread -> terminate called without an active exception -> SIGABRT. That is the stack in this issue.

    The trigger

    /usr/share/fonts/Adwaita/AdwaitaSans-Regular.ttf, axes ['opsz', 'wght']. The original core contains the string wght=400,opsz=15.4006, matching those axes.

    Bisected with FONTCONFIG_FILE on Arch, 7.2.1.5476 AppImage, Hyprland:

    fontconfig result
    unmodified crashed 6/6
    reject /usr/share/fonts/Adwaita/* survived 4/4
    reject SegUIVar.ttf only still crashed
    reject Sitka* only still crashed

    Ruled out: memory pressure, GDK_BACKEND=x11 and =wayland, GDK_SCALE, fractional display scaling, WEBKIT_DISABLE_COMPOSITING_MODE, WEBKIT_DISABLE_DMABUF_RENDERER, LIBGL_ALWAYS_SOFTWARE. All still crash.

    This explains the other reports

    • 7.0.0 AppImage not working on Arch Linux + Gnome 49 #522 (closed) worked around it by downgrading freetype2 to 2.13.0. Same root cause — an older host FreeType happens to be layout-compatible with the bundled one.
    • Flatpak works because the GNOME runtime supplies its own matched FreeType and font set inside the sandbox, not because of portals or theming.
    • The sway / qtile / Hyprland correlation is coincidental. adwaita-fonts is a hard dependency of gtk3 -> at-spi2-core -> gsettings-desktop-schemas, so it is present on those systems; what matters is whether a variable font gets selected for UI text, not the compositor.
    • The gsettings set org.gnome.desktop.interface font-name 'Noto Sans 11' suggestion in the thread works for the same reason — Noto Sans is static.

    Workaround that doesn't downgrade anything

    Launch with a fontconfig that hides the variable font from this process only:

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
    <fontconfig>
      <include ignore_missing="yes">/etc/fonts/fonts.conf</include>
      <selectfont><rejectfont>
        <glob>/usr/share/fonts/Adwaita/*</glob>
      </rejectfont></selectfont>
    </fontconfig>

    Then FONTCONFIG_FILE=/path/to/that.conf ./CrealityPrint-V7.2.1.5476-x86_64-Release.AppImage. Verified across repeated launches; the app reaches the main window and stays up.

    Suggested fixes

    1. Stop exporting the bundled FreeType symbols. Link it with a version script or -fvisibility=hidden, or drop the static FreeType and use the host's. This is the actual bug and it will keep biting on any distro whose FreeType has moved on.
    2. Separately, harden Plater::priv::~priv(). A joinable std::thread member destroyed without join/detach turns any failure during MainFrame construction into an unconditional abort with no diagnostic. Joining or detaching it would have surfaced a readable font error instead of SIGABRT, in this bug and in every future one that trips the same path.

    Happy to supply the full core dumps or run further diagnostics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions