gnunn1 / tilix

A tiling terminal emulator for Linux using GTK+ 3
https://gnunn1.github.io/tilix-web
Mozilla Public License 2.0
5.42k stars 292 forks source link

Tilix core dumps with GNOME 47 #2239

Open cedricroijakkers opened 2 months ago

cedricroijakkers commented 2 months ago

GNOME 47 has just been released in the Arch repo's, and Tilix now core dumps when starting:

Sep 19 12:47:13 48HVWD3 systemd-coredump[9745]: [🡕] Process 9709 (tilix) of user 1000 dumped core.

                                                Stack trace of thread 9709:
                                                #0  0x000079a7b85f0c18 n/a (libgobject-2.0.so.0 + 0x41c18)
                                                #1  0x000079a7b85e1b4c n/a (libgobject-2.0.so.0 + 0x32b4c)
                                                #2  0x000079a7b85e1db2 g_signal_emit_valist (libgobject-2.0.so.0 + 0x32db2)
                                                #3  0x000079a7b85e1e74 g_signal_emit (libgobject-2.0.so.0 + 0x32e74)
                                                #4  0x000079a7b85ccd16 n/a (libgobject-2.0.so.0 + 0x1dd16)
                                                #5  0x000079a7b85c1118 n/a (libgobject-2.0.so.0 + 0x12118)
                                                #6  0x000079a7b8926857 n/a (libvte-2.91.so.0 + 0x13857)
                                                #7  0x000079a7b8960d89 n/a (libvte-2.91.so.0 + 0x4dd89)
                                                #8  0x000079a7b8961157 n/a (libvte-2.91.so.0 + 0x4e157)
                                                #9  0x000079a7b8961253 n/a (libvte-2.91.so.0 + 0x4e253)
                                                #10 0x000079a7b89613ad n/a (libvte-2.91.so.0 + 0x4e3ad)
                                                #11 0x000079a7b894697b n/a (libvte-2.91.so.0 + 0x3397b)
                                                #12 0x000079a7b7944f6d n/a (libgtk-3.so.0 + 0x344f6d)
                                                #13 0x000079a7b85c082a g_closure_invoke (libgobject-2.0.so.0 + 0x1182a)
                                                #14 0x000079a7b85f13e5 n/a (libgobject-2.0.so.0 + 0x423e5)
                                                #15 0x000079a7b85e1b4c n/a (libgobject-2.0.so.0 + 0x32b4c)
                                                #16 0x000079a7b85e1db2 g_signal_emit_valist (libgobject-2.0.so.0 + 0x32db2)
                                                #17 0x000079a7b85e1e74 g_signal_emit (libgobject-2.0.so.0 + 0x32e74)
                                                #18 0x000079a7b754806e n/a (libgdk-3.so.0 + 0x3506e)
                                                #19 0x000079a7b7533ac0 n/a (libgdk-3.so.0 + 0x20ac0)
                                                #20 0x000079a7b84bd90a n/a (libglib-2.0.so.0 + 0x5e90a)
                                                #21 0x000079a7b84bc459 n/a (libglib-2.0.so.0 + 0x5d459)
                                                #22 0x000079a7b851f0d7 n/a (libglib-2.0.so.0 + 0xc00d7)
                                                #23 0x000079a7b84bb955 g_main_context_iteration (libglib-2.0.so.0 + 0x5c955)
                                                #24 0x000079a7b86ecbf6 g_application_run (libgio-2.0.so.0 + 0xdebf6)
                                                #25 0x0000583370c8840a n/a (tilix + 0x31640a)
                                                #26 0x000079a7b8daa06d _D2rt6dmain212_d_run_main2UAAamPUQgZiZ6runAllMFZv (libdruntime-ldc-shared.so.109 + 0xe706d)
                                                #27 0x000079a7b8da9e87 _d_run_main2 (libdruntime-ldc-shared.so.109 + 0xe6e87)
                                                #28 0x000079a7b8da9cdd _d_run_main (libdruntime-ldc-shared.so.109 + 0xe6cdd)
                                                #29 0x0000583370c8b1e2 n/a (tilix + 0x3191e2)
                                                #30 0x000079a7b8af7e08 n/a (libc.so.6 + 0x25e08)
                                                #31 0x000079a7b8af7ecc __libc_start_main (libc.so.6 + 0x25ecc)
                                                #32 0x0000583370a95c15 n/a (tilix + 0x123c15)

                                                Stack trace of thread 9710:
                                                #0  0x000079a7b8be91fd syscall (libc.so.6 + 0x1171fd)
                                                #1  0x000079a7b84ede20 g_cond_wait (libglib-2.0.so.0 + 0x8ee20)
                                                #2  0x000079a7b848498c n/a (libglib-2.0.so.0 + 0x2598c)
                                                #3  0x000079a7b84f4037 n/a (libglib-2.0.so.0 + 0x95037)
                                                #4  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #5  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #6  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)

                                                Stack trace of thread 9712:
                                                #0  0x000079a7b8be91fd syscall (libc.so.6 + 0x1171fd)
                                                #1  0x000079a7b84eeb37 g_cond_wait_until (libglib-2.0.so.0 + 0x8fb37)
                                                #2  0x000079a7b8484955 n/a (libglib-2.0.so.0 + 0x25955)
                                                #3  0x000079a7b84f4afb n/a (libglib-2.0.so.0 + 0x95afb)
                                                #4  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #5  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #6  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)

                                                Stack trace of thread 9713:
                                                #0  0x000079a7b8bddbb0 ppoll (libc.so.6 + 0x10bbb0)
                                                #1  0x000079a7b851f1a4 n/a (libglib-2.0.so.0 + 0xc01a4)
                                                #2  0x000079a7b84bd187 g_main_loop_run (libglib-2.0.so.0 + 0x5e187)
                                                #3  0x000079a7b8721ae4 n/a (libgio-2.0.so.0 + 0x113ae4)
                                                #4  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #5  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #6  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)

                                                Stack trace of thread 9714:
                                                #0  0x000079a7b8bddbb0 ppoll (libc.so.6 + 0x10bbb0)
                                                #1  0x000079a7b851f1a4 n/a (libglib-2.0.so.0 + 0xc01a4)
                                                #2  0x000079a7b84bb955 g_main_context_iteration (libglib-2.0.so.0 + 0x5c955)
                                                #3  0x000079a7b42e42fe n/a (libdconfsettings.so + 0x62fe)
                                                #4  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #5  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #6  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)

                                                Stack trace of thread 9711:
                                                #0  0x000079a7b8bddbb0 ppoll (libc.so.6 + 0x10bbb0)
                                                #1  0x000079a7b851f1a4 n/a (libglib-2.0.so.0 + 0xc01a4)
                                                #2  0x000079a7b84bb955 g_main_context_iteration (libglib-2.0.so.0 + 0x5c955)
                                                #3  0x000079a7b84bb9b2 n/a (libglib-2.0.so.0 + 0x5c9b2)
                                                #4  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #5  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #6  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)

                                                Stack trace of thread 9715:
                                                #0  0x000079a7b8be91fd syscall (libc.so.6 + 0x1171fd)
                                                #1  0x000079a7b84ede20 g_cond_wait (libglib-2.0.so.0 + 0x8ee20)
                                                #2  0x000079a7b848498c n/a (libglib-2.0.so.0 + 0x2598c)
                                                #3  0x000079a7b84849fd g_async_queue_pop (libglib-2.0.so.0 + 0x259fd)
                                                #4  0x000079a7b6a835fc n/a (libpangoft2-1.0.so.0 + 0xc5fc)
                                                #5  0x000079a7b84eff26 n/a (libglib-2.0.so.0 + 0x90f26)
                                                #6  0x000079a7b8b6639d n/a (libc.so.6 + 0x9439d)
                                                #7  0x000079a7b8beb49c n/a (libc.so.6 + 0x11949c)
                                                ELF object binary architecture: AMD x86-64
cedricroijakkers commented 1 month ago

I've tried building from source, and that is failing with the following message:

FAILED: tilix 
ldc  -of=tilix tilix.p/source_gx_gtk_actions.d.o tilix.p/source_gx_gtk_cairo.d.o tilix.p/source_gx_gtk_clipboard.d.o tilix.p/source_gx_gtk_color.d.o tilix.p/source_gx_gtk_dialog.d.o tilix.p/source_gx_gtk_resource.d.o tilix.p/source_gx_gtk_settings.d.o tilix.p/source_gx_gtk_threads.d.o tilix.p/source_gx_gtk_util.d.o tilix.p/source_gx_gtk_vte.d.o tilix.p/source_gx_gtk_x11.d.o tilix.p/source_gx_i18n_l10n.d.o tilix.p/source_gx_tilix_bookmark_bmchooser.d.o tilix.p/source_gx_tilix_bookmark_bmeditor.d.o tilix.p/source_gx_tilix_bookmark_bmtreeview.d.o tilix.p/source_gx_tilix_bookmark_manager.d.o tilix.p/source_gx_tilix_prefeditor_advdialog.d.o tilix.p/source_gx_tilix_prefeditor_bookmarkeditor.d.o tilix.p/source_gx_tilix_prefeditor_common.d.o tilix.p/source_gx_tilix_prefeditor_prefdialog.d.o tilix.p/source_gx_tilix_prefeditor_profileeditor.d.o tilix.p/source_gx_tilix_prefeditor_titleeditor.d.o tilix.p/source_gx_tilix_terminal_actions.d.o tilix.p/source_gx_tilix_terminal_activeprocess.d.o tilix.p/source_gx_tilix_terminal_advpaste.d.o tilix.p/source_gx_tilix_terminal_exvte.d.o tilix.p/source_gx_tilix_terminal_layout.d.o tilix.p/source_gx_tilix_terminal_monitor.d.o tilix.p/source_gx_tilix_terminal_password.d.o tilix.p/source_gx_tilix_terminal_regex.d.o tilix.p/source_gx_tilix_terminal_search.d.o tilix.p/source_gx_tilix_terminal_terminal.d.o tilix.p/source_gx_tilix_terminal_util.d.o tilix.p/source_gx_tilix_application.d.o tilix.p/source_gx_tilix_appwindow.d.o tilix.p/source_gx_tilix_closedialog.d.o tilix.p/source_gx_tilix_cmdparams.d.o tilix.p/source_gx_tilix_colorschemes.d.o tilix.p/source_gx_tilix_common.d.o tilix.p/source_gx_tilix_constants.d.o tilix.p/source_gx_tilix_customtitle.d.o tilix.p/source_gx_tilix_encoding.d.o tilix.p/source_gx_tilix_preferences.d.o tilix.p/source_gx_tilix_session.d.o tilix.p/source_gx_tilix_shortcuts.d.o tilix.p/source_gx_tilix_sidebar.d.o tilix.p/source_gx_util_array.d.o tilix.p/source_gx_util_path.d.o tilix.p/source_gx_util_string.d.o tilix.p/source_secret_Collection.d.o tilix.p/source_secret_Item.d.o tilix.p/source_secret_Prompt.d.o tilix.p/source_secret_Schema.d.o tilix.p/source_secret_SchemaAttribute.d.o tilix.p/source_secret_Secret.d.o tilix.p/source_secret_Service.d.o tilix.p/source_secret_Value.d.o tilix.p/source_secretc_secret.d.o tilix.p/source_secretc_secrettypes.d.o tilix.p/source_x11_X.d.o tilix.p/source_x11_Xlib.d.o tilix.p/source_app.d.o -L=--allow-shlib-undefined -link-defaultlib-shared -L=-O1 -L=--sort-common -L=--as-needed -L=-z -L=relro -L=-z -L=now -L=-z -L=pack-relative-relocs --flto=full -L=--export-dynamic -L=-L/usr/lib/pkgconfig/../../lib -L-L/usr/lib// -L-lgtkd-3 -L-ldl -L=-lgtk-3 -L=-lgdk-3 -L=-lz -L=-latk-1.0 -L=-lrsvg-2 -L=-lcairo-gobject -L=-lcairo -L=-lpng16 -L=-ldav1d -L=-lgdk_pixbuf-2.0 -L=-lharfbuzz -L=-lxml2 -L=-lpangocairo-1.0 -L=-lpangoft2-1.0 -L=-lpango-1.0 -L=-lfontconfig -L=-lfreetype -L=-lgmodule-2.0 -L=-lgio-2.0 -L=-lglib-2.0 -L=-lgobject-2.0 -L=--export-dynamic -L=-L/usr/lib/pkgconfig/../../lib -L-lvted-3 -L-L/usr/lib// -L-lgtkd-3 -L-ldl -L=-lgdk-3 -L=-lz -L=-latk-1.0 -L=-lrsvg-2 -L=-lcairo-gobject -L=-lpng16 -L=-ldav1d -L=-lgdk_pixbuf-2.0 -L=-lharfbuzz -L=-lxml2 -L=-lpangocairo-1.0 -L=-lpangoft2-1.0 -L=-lfontconfig -L=-lfreetype -L=-lgmodule-2.0 -L=-lvte-2.91 -L=-lcairo -L=-lgio-2.0 -L=-lglib-2.0 -L=-lgobject-2.0 -L=-lpango-1.0 -L=-lgtk-3 -L=-lX11 -L=-lunwind -L=-lsecret-1 -L=-lglib-2.0 -L=-lgobject-2.0 -L=-lgio-2.0
/usr/bin/ld: /tmp/lto-llvm-8ebefc.o: in function `gx.tilix.common.GenericEvent!(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult).GenericEvent.__xopEquals(ref const(gx.tilix.common.GenericEvent!(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult).GenericEvent)) const':
ld-temp.o:(.text._D2gx5tilix6common__T12GenericEventTEQBjQBjQBg10ActionTypeTCQCgQCgQCd__T16CumulativeResultTbZQvZQCx11__xopEqualsMxFKxSQEmQEmQEj__TQEfTQDuTQDbZQErZb+0x25): undefined reference to `core.internal.array.equality.__equals!(const(void(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult) delegate), const(void(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult) delegate)).__equals(scope const(void(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult) delegate)[], scope const(void(gx.tilix.common.ActionType, gx.tilix.common.CumulativeResult!(bool).CumulativeResult) delegate)[])'
/usr/bin/ld: /tmp/lto-llvm-8ebefc.o: in function `gx.tilix.common.GenericEvent!(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]).GenericEvent.__xopEquals(ref const(gx.tilix.common.GenericEvent!(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]).GenericEvent)) const':
ld-temp.o:(.text._D2gx5tilix6common__T12GenericEventTAyaTQeTQhTQkZQBc11__xopEqualsMxFKxSQCrQCrQCo__TQCkTQBzTQCdTQChTQClZQDeZb+0x25): undefined reference to `core.internal.array.equality.__equals!(const(void(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]) delegate), const(void(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]) delegate)).__equals(scope const(void(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]) delegate)[], scope const(void(immutable(char)[], immutable(char)[], immutable(char)[], immutable(char)[]) delegate)[])'
/usr/bin/ld: /tmp/lto-llvm-8ebefc.o: in function `gx.tilix.common.GenericEvent!(gx.tilix.session.Session).GenericEvent.__xopEquals(ref const(gx.tilix.common.GenericEvent!(gx.tilix.session.Session).GenericEvent)) const':
ld-temp.o:(.text._D2gx5tilix6common__T12GenericEventTCQBjQBj7session7SessionZQBn11__xopEqualsMxFKxSQDcQDcQCz__TQCvTQCkZQDdZb+0x25): undefined reference to `core.internal.array.equality.__equals!(const(void(gx.tilix.session.Session) delegate), const(void(gx.tilix.session.Session) delegate)).__equals(scope const(void(gx.tilix.session.Session) delegate)[], scope const(void(gx.tilix.session.Session) delegate)[])'
collect2: error: ld returned 1 exit status
Error: /usr/bin/cc failed with status: 1

Seems like some library Tilix is using has changed in GNOME 47 maybe?

cedricroijakkers commented 1 month ago

I managed to get a debugging backtrace, see gdb-tilix.txt. It looks like Tilix needs to be rebuilt against the new library. I don have any experience in D, so I really cannot help here by making a PR or something...

cedricroijakkers commented 1 month ago

The good folks at Arch have now managed to get Tilix to compile again against GNOME 47, see the patch here, and this seems to work again for a lot of people. However, in my case (and I have no idea why) it is still core dumping when starting on one PC, but not on the other.

Also it seems that if you start Tilix with a config file to start with a 2x2 grid, it always core dumps on a PC where you can start the vanilly Tilix.

andryyy commented 2 weeks ago

I had no idea what I was doing, but I have backups, so I gave it a try and compile on Debian Trixie/testing.

My Tilix would constantly crash with a similar segfault at libgdk-3.

I installed dub and libgio-2.0-dev-bin, then changed the dub.json:

*** 33,38 ****
--- 33,39 ----
              "name": "default",
              "targetType": "executable",
              "libs-linux": ["X11"],
+             "lflags": ["-lz"],
              "versions": ["StdLoggerDisableTrace"]
          },
          {

See the added -lz flag.

After that it compiled and I was able to use install.sh as root (don't sudo here).

So far it seems stable.

cedricroijakkers commented 2 weeks ago

I've tried your trick in linking the binary to lz, but no dice. I can see the new binary is now linked to /usr/lib/libz.so.1 but still crashes when starting.

I'm really baffled here, since I have another laptop on which Tilix is working fine (fair warning: that is running KDE on X11, I'm running GNOME on Wayland). There must be something wrong on my system, but I have absolutely no clue what it is.