Repository navigation
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
Description
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-03CrealityPrint-V7.1.1.4472-x86_64-Release.AppImage(sha256cf9daa14dda8168c131f504c875ec089b498db3a034dcb7789ce5c05b73f98f0) — crashed on 2026-09-05CrealityPrint-V7.2.1.5476-x86_64-Release.AppImage, i.e. the current latest release (sha256b28f66c25d0c6652ed6ae49d0766780f46a5b839b93ce1968e639823e1f6e2f3) — crashed on 2026-09-05
- Launched both by double-clicking a
.gcodefile 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
- On Arch/Omarchy + Hyprland, download any recent Linux AppImage release (tested: 7.0.0, 7.1.1, 7.2.1),
chmod +x, run it. - Observe it exit almost immediately with SIGABRT, no window ever shown.
- Reproduces identically whether launched bare or with a
.gcodefile 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
pykekaisora commentedon Sep 6, 2026
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?
dellipse commentedon Sep 12, 2026
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:
creality-print-binpackage (native install to/opt/creality-print)CrealityPrint-V7.2.1.5476-x86_64-Release.AppImage, downloaded directly from this repo's releases)Fuller backtrace — I had the
creality-print-bin-debugpackage installed locally, which resolved function names past frame #4:So the exception/terminate happens while
MainFrame's constructor is still building child windows — the stack is already unwinding throughNotebook/Platerdestruction whenstd::terminate()fires. My captured stderr on both crashes readsterminate called without an active exception(not "after throwing an instance of ..."), which usually points to astd::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-binAUR 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'sadd_msg_content invalid font detected ... dark_mode=trueline 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.
sling86 commentedon Sep 14, 2026
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
CrealityPrintexecutable statically links its own FreeType and exports its symbols from the binary: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 sharingFT_Faceobjects 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: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),MainFrameconstruction is abandoned, the half-builtPlateris destroyed, andPlater::priv::~priv()destroys a still-joinablestd::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 stringwght=400,opsz=15.4006, matching those axes.Bisected with
FONTCONFIG_FILEon Arch, 7.2.1.5476 AppImage, Hyprland:/usr/share/fonts/Adwaita/*SegUIVar.ttfonlySitka*onlyRuled out: memory pressure,
GDK_BACKEND=x11and=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
freetype2to 2.13.0. Same root cause — an older host FreeType happens to be layout-compatible with the bundled one.adwaita-fontsis a hard dependency ofgtk3 -> 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.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:
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
-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.Plater::priv::~priv(). A joinablestd::threadmember destroyed without join/detach turns any failure duringMainFrameconstruction 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.