node-gtk
node-gtk copied to clipboard
`activate` vfunc in `Gtk.Application` results in segfault
Using the activate signal in Gtk.Application works fine, but switching to the activate vfunc results in segfault:
Core dump:
PID: 48034 (node)
UID: 1000 (pervoj)
GID: 1000 (pervoj)
Signal: 11 (SEGV)
Timestamp: Sat 2024-04-27 21:03:55 CEST (4min 51s ago)
Command Line: node .
Executable: /var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node
Control Group: /user.slice/user-1000.slice/[email protected]/app.slice/app-gnome-codium-43495.scope
Unit: [email protected]
User Unit: app-gnome-codium-43495.scope
Slice: user-1000.slice
Owner UID: 1000 (pervoj)
Boot ID: cd0e8b4925304c078e15ea8d37166d23
Machine ID: f54b3cee66d14309828dbbdd47de34bf
Hostname: envy
Storage: /var/lib/systemd/coredump/core.node.1000.cd0e8b4925304c078e15ea8d37166d23.48034.1714244635000000.zst (present)
Size on Disk: 10.3M
Message: Process 48034 (node) of user 1000 dumped core.
Module libgvfsdbus.so from rpm gvfs-1.54.0-2.fc40.x86_64
Module libgvfscommon.so from rpm gvfs-1.54.0-2.fc40.x86_64
Module libgioremote-volume-monitor.so from rpm gvfs-1.54.0-2.fc40.x86_64
Module libduktape.so.207 from rpm duktape-2.7.0-7.fc40.x86_64
Module libpxbackend-1.0.so from rpm libproxy-0.5.5-1.fc40.x86_64
Module libproxy.so.1 from rpm libproxy-0.5.5-1.fc40.x86_64
Module libdconfsettings.so from rpm dconf-0.40.0-12.fc40.x86_64
Module libpciaccess.so.0 from rpm libpciaccess-0.16-12.fc40.x86_64
Module libdrm_intel.so.1 from rpm libdrm-2.4.120-3.fc40.x86_64
Module libdrm_nouveau.so.2 from rpm libdrm-2.4.120-3.fc40.x86_64
Module libdrm_amdgpu.so.1 from rpm libdrm-2.4.120-3.fc40.x86_64
Module libdrm_radeon.so.1 from rpm libdrm-2.4.120-3.fc40.x86_64
Module libsensors.so.4 from rpm lm_sensors-3.6.0-18.fc40.x86_64
Module iris_dri.so from rpm mesa-24.0.5-1.fc40.x86_64
Module libXxf86vm.so.1 from rpm libXxf86vm-1.1.5-6.fc40.x86_64
Module libxcb-glx.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libGLX_mesa.so.0 from rpm mesa-24.0.5-1.fc40.x86_64
Module libGL.so.1 from rpm libglvnd-1.7.0-4.fc40.x86_64
Module libtinfo.so.6 from rpm ncurses-6.4-12.20240127.fc40.x86_64
Module libedit.so.0 from rpm libedit-3.1-50.20230828cvs.fc40.x86_64
Module libxshmfence.so.1 from rpm libxshmfence-1.3.2-3.fc40.x86_64
Module libxcb-sync.so.1 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb-present.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb-dri3.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb-xfixes.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb-dri2.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libglapi.so.0 from rpm mesa-24.0.5-1.fc40.x86_64
Module libEGL_mesa.so.0 from rpm mesa-24.0.5-1.fc40.x86_64
Module libgstaudio-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libxcb-randr.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libexpat.so.1 from rpm expat-2.6.2-1.fc40.x86_64
Module libwayland-server.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
Module libGLdispatch.so.0 from rpm libglvnd-1.7.0-4.fc40.x86_64
Module libelf.so.1 from rpm elfutils-0.191-4.fc40.x86_64
Module libgstpbutils-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libgsttag-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libgbm.so.1 from rpm mesa-24.0.5-1.fc40.x86_64
Module libdrm.so.2 from rpm libdrm-2.4.120-3.fc40.x86_64
Module libgudev-1.0.so.0 from rpm libgudev-238-5.fc40.x86_64
Module libX11-xcb.so.1 from rpm libX11-1.8.9-1.fc40.x86_64
Module libwayland-cursor.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
Module libGLX.so.0 from rpm libglvnd-1.7.0-4.fc40.x86_64
Module libEGL.so.1 from rpm libglvnd-1.7.0-4.fc40.x86_64
Module libgstallocators-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libdw.so.1 from rpm elfutils-0.191-4.fc40.x86_64
Module libunwind.so.8 from rpm libunwind-1.8.0-3.fc40.x86_64
Module liborc-0.4.so.0 from rpm orc-0.4.38-2.fc40.x86_64
Module libgstbase-1.0.so.0 from rpm gstreamer1-1.22.9-1.fc40.x86_64
Module libgstplay-1.0.so.0 from rpm gstreamer1-plugins-bad-free-1.22.9-3.fc40.x86_64
Module libgstgl-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libgstreamer-1.0.so.0 from rpm gstreamer1-1.22.9-1.fc40.x86_64
Module libgstvideo-1.0.so.0 from rpm gstreamer1-plugins-base-1.22.9-1.fc40.x86_64
Module libgstplayer-1.0.so.0 from rpm gstreamer1-plugins-bad-free-1.22.9-3.fc40.x86_64
Module libmedia-gstreamer.so from rpm gtk4-4.14.3-1.fc40.x86_64
Module libibus-1.0.so.5 from rpm ibus-1.5.30~rc3-1.fc40.x86_64
Module libim-ibus.so from rpm ibus-1.5.30~rc3-1.fc40.x86_64
Module libprintbackend-file.so from rpm gtk4-4.14.3-1.fc40.x86_64
Module libgmp.so.10 from rpm gmp-6.2.1-8.fc40.x86_64
Module libhogweed.so.6 from rpm nettle-3.9.1-6.fc40.x86_64
Module libnettle.so.8 from rpm nettle-3.9.1-6.fc40.x86_64
Module libtasn1.so.6 from rpm libtasn1-4.19.0-6.fc40.x86_64
Module libp11-kit.so.0 from rpm p11-kit-0.25.3-4.fc40.x86_64
Module libdbus-1.so.3 from rpm dbus-1.14.10-3.fc40.x86_64
Module libudev.so.1 from rpm systemd-255.4-1.fc40.x86_64
Module liblcms2.so.2 from rpm lcms2-2.16-3.fc40.x86_64
Module libgnutls.so.30 from rpm gnutls-3.8.5-1.fc40.x86_64
Module libavahi-client.so.3 from rpm avahi-0.8-26.fc40.x86_64
Module libavahi-common.so.3 from rpm avahi-0.8-26.fc40.x86_64
Module libcolord.so.2 from rpm colord-1.4.7-3.fc40.x86_64
Module libcups.so.2 from rpm cups-2.4.7-13.fc40.x86_64
Module libprintbackend-cups.so from rpm gtk4-4.14.3-1.fc40.x86_64
Module libkeyutils.so.1 from rpm keyutils-1.6.3-3.fc40.x86_64
Module libkrb5support.so.0 from rpm krb5-1.21.2-5.fc40.x86_64
Module libcom_err.so.2 from rpm e2fsprogs-1.47.0-5.fc40.x86_64
Module libk5crypto.so.3 from rpm krb5-1.21.2-5.fc40.x86_64
Module libkrb5.so.3 from rpm krb5-1.21.2-5.fc40.x86_64
Module libunistring.so.5 from rpm libunistring-1.1-7.fc40.x86_64
Module liblz4.so.1 from rpm lz4-1.9.4-6.fc40.x86_64
Module libcap.so.2 from rpm libcap-2.69-8.fc40.x86_64
Module libgssapi_krb5.so.2 from rpm krb5-1.21.2-5.fc40.x86_64
Module libcrypto.so.3 from rpm openssl-3.2.1-2.fc40.x86_64
Module libssl.so.3 from rpm openssl-3.2.1-2.fc40.x86_64
Module libidn2.so.0 from rpm libidn2-2.3.7-1.fc40.x86_64
Module libnghttp2.so.14 from rpm nghttp2-1.59.0-3.fc40.x86_64
Module libstemmer.so.0 from rpm snowball-2.2.0-10.fc40.x86_64
Module libsystemd.so.0 from rpm systemd-255.4-1.fc40.x86_64
Module libyaml-0.so.2 from rpm libyaml-0.2.5-14.fc40.x86_64
Module libxmlb.so.2 from rpm libxmlb-0.3.19-1.fc40.x86_64
Module libcurl.so.4 from rpm curl-8.6.0-8.fc40.x86_64
Module libappstream.so.5 from rpm appstream-1.0.2-2.fc40.x86_64
Module libadwaita-1.so.0 from rpm libadwaita-1.5.0-1.fc40.x86_64
Module libsharpyuv.so.0 from rpm libwebp-1.3.2-5.fc40.x86_64
Module libjbig.so.2.1 from rpm jbigkit-2.1-29.fc40.x86_64
Module libLerc.so.4 from rpm liblerc-4.0.0-6.fc40.x86_64
Module libzstd.so.1 from rpm zstd-1.5.6-1.fc40.x86_64
Module libwebp.so.7 from rpm libwebp-1.3.2-5.fc40.x86_64
Module libjson-glib-1.0.so.0 from rpm json-glib-1.8.0-3.fc40.x86_64
Module libcairo-script-interpreter.so.2 from rpm cairo-1.18.0-3.fc40.x86_64
Module libXinerama.so.1 from rpm libXinerama-1.1.5-6.fc40.x86_64
Module libXrandr.so.2 from rpm libXrandr-1.5.4-3.fc40.x86_64
Module libXfixes.so.3 from rpm libXfixes-6.0.1-3.fc40.x86_64
Module libXdamage.so.1 from rpm libXdamage-1.1.6-3.fc40.x86_64
Module libXcursor.so.1 from rpm libXcursor-1.2.1-7.fc40.x86_64
Module libwayland-egl.so.1 from rpm wayland-1.22.0-3.fc40.x86_64
Module libwayland-client.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
Module libxkbcommon.so.0 from rpm libxkbcommon-1.6.0-2.fc40.x86_64
Module libtiff.so.6 from rpm libtiff-4.6.0-2.fc40.x86_64
Module libvulkan.so.1 from rpm vulkan-loader-1.3.280.0-1.fc40.x86_64
Module libtracker-sparql-3.0.so.0 from rpm tracker-3.7.1-1.fc40.x86_64
Module libpangoft2-1.0.so.0 from rpm pango-1.52.2-1.fc40.x86_64
Module libXi.so.6 from rpm libXi-1.8.1-5.fc40.x86_64
Module libepoxy.so.0 from rpm libepoxy-1.5.10-6.fc40.x86_64
Module libpangocairo-1.0.so.0 from rpm pango-1.52.2-1.fc40.x86_64
Module libgtk-4.so.1 from rpm gtk4-4.14.3-1.fc40.x86_64
Module libgraphene-1.0.so.0 from rpm graphene-1.10.6-8.fc40.x86_64
Module libjpeg.so.62 from rpm libjpeg-turbo-3.0.2-1.fc40.x86_64
Module libgdk_pixbuf-2.0.so.0 from rpm gdk-pixbuf2-2.42.10-8.fc40.x86_64
Module libdatrie.so.1 from rpm libdatrie-0.2.13-9.fc40.x86_64
Module libthai.so.0 from rpm libthai-0.1.29-8.fc40.x86_64
Module libfribidi.so.0 from rpm fribidi-1.0.13-4.fc40.x86_64
Module libpango-1.0.so.0 from rpm pango-1.52.2-1.fc40.x86_64
Module libcairo-gobject.so.2 from rpm cairo-1.18.0-3.fc40.x86_64
Module libharfbuzz-gobject.so.0 from rpm harfbuzz-8.3.0-5.fc40.x86_64
Module libblkid.so.1 from rpm util-linux-2.40-13.fc40.x86_64
Module libselinux.so.1 from rpm libselinux-3.6-4.fc40.x86_64
Module libmount.so.1 from rpm util-linux-2.40-13.fc40.x86_64
Module libgio-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libbrotlicommon.so.1 from rpm brotli-1.1.0-3.fc40.x86_64
Module libgraphite2.so.3 from rpm graphite2-1.3.14-15.fc40.x86_64
Module liblzma.so.5 from rpm xz-5.4.6-3.fc40.x86_64
Module libXau.so.6 from rpm libXau-1.0.11-6.fc40.x86_64
Module libbrotlidec.so.1 from rpm brotli-1.1.0-3.fc40.x86_64
Module libharfbuzz.so.0 from rpm harfbuzz-8.3.0-5.fc40.x86_64
Module libbz2.so.1 from rpm bzip2-1.0.8-18.fc40.x86_64
Module libxml2.so.2 from rpm libxml2-2.12.6-1.fc40.x86_64
Module libpcre2-8.so.0 from rpm pcre2-10.42-2.fc40.2.x86_64
Module libpixman-1.so.0 from rpm pixman-0.43.0-3.fc40.x86_64
Module libxcb-shm.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb-render.so.0 from rpm libxcb-1.16-4.fc40.x86_64
Module libxcb.so.1 from rpm libxcb-1.16-4.fc40.x86_64
Module libXrender.so.1 from rpm libXrender-0.9.11-6.fc40.x86_64
Module libXext.so.6 from rpm libXext-1.3.6-1.fc40.x86_64
Module libX11.so.6 from rpm libX11-1.8.9-1.fc40.x86_64
Module libfreetype.so.6 from rpm freetype-2.13.2-5.fc40.x86_64
Module libfontconfig.so.1 from rpm fontconfig-2.15.0-4.fc40.x86_64
Module libpng16.so.16 from rpm libpng-1.6.40-3.fc40.x86_64
Module libz.so.1 from rpm zlib-ng-2.1.6-2.fc40.x86_64
Module libffi.so.8 from rpm libffi-3.4.4-7.fc40.x86_64
Module libgmodule-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libglib-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libgobject-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libcairo.so.2 from rpm cairo-1.18.0-3.fc40.x86_64
Module libgirepository-1.0.so.1 from rpm gobject-introspection-1.80.1-1.fc40.x86_64
Stack trace of thread 48034:
#0 0x00007fd166002010 n/a (n/a + 0x0)
#1 0x00007fd16748bf11 g_signal_emit_valist (libgobject-2.0.so.0 + 0x31f11)
#2 0x00007fd16748bfd3 g_signal_emit (libgobject-2.0.so.0 + 0x31fd3)
#3 0x00007fd15ff15830 g_application_real_local_command_line (libgio-2.0.so.0 + 0xe1830)
#4 0x00007fd15ff159d3 g_application_run (libgio-2.0.so.0 + 0xe19d3)
#5 0x00007fd167453056 ffi_call_unix64 (libffi.so.8 + 0x9056)
#6 0x00007fd16744f6a0 ffi_call_int.lto_priv.0 (libffi.so.8 + 0x56a0)
#7 0x00007fd1674524ee ffi_call (libffi.so.8 + 0x84ee)
#8 0x00007fd16750a1ad n/a (/var/home/pervoj/Temp/gtk-js-tmp/node_modules/node-gtk/lib/binding/node-v120-linux-x64/node_gtk.node + 0x2d1ad)
#9 0x00007fd16750a6a4 n/a (/var/home/pervoj/Temp/gtk-js-tmp/node_modules/node-gtk/lib/binding/node-v120-linux-x64/node_gtk.node + 0x2d6a4)
#10 0x00007fd1675088f4 n/a (/var/home/pervoj/Temp/gtk-js-tmp/node_modules/node-gtk/lib/binding/node-v120-linux-x64/node_gtk.node + 0x2b8f4)
#11 0x00007fd15fc0eadd n/a (n/a + 0x0)
#12 0x00007fd15fc0cf18 n/a (n/a + 0x0)
#13 0x00007fd15fc4cacd n/a (n/a + 0x0)
#14 0x00007fd15fc0ab1c n/a (n/a + 0x0)
#15 0x00007fd15fc0a843 n/a (n/a + 0x0)
#16 0x00000000012121ab n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe121ab)
#17 0x0000000001212f50 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe12f50)
#18 0x000000000121348a n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe1348a)
#19 0x00000000015a5a06 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x11a5a06)
#20 0x00000000015a5fe8 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x11a5fe8)
#21 0x00000000015a61b9 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x11a61b9)
#22 0x00000000010cea9c n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xccea9c)
#23 0x0000000000dcc0eb n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x9cc0eb)
#24 0x00007fd15fc0eadd n/a (n/a + 0x0)
#25 0x00007fd15fc0cf18 n/a (n/a + 0x0)
#26 0x00007fd15fc499c3 n/a (n/a + 0x0)
#27 0x00007fd15fd15d31 n/a (n/a + 0x0)
#28 0x00007fd15fc374e8 n/a (n/a + 0x0)
#29 0x00007fd15fc0aa43 n/a (n/a + 0x0)
#30 0x00000000012123dd n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe123dd)
#31 0x000000000121358f n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe1358f)
#32 0x00000000012440c7 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe440c7)
#33 0x000000000124446d n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xe4446d)
#34 0x0000000000d28c1b n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x928c1b)
#35 0x0000000000d28e31 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x928e31)
#36 0x0000000000eb232f n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xab232f)
#37 0x0000000000eb58cf n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xab58cf)
#38 0x0000000000eb5d58 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xab5d58)
#39 0x0000000000d29bf1 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x929bf1)
#40 0x0000000000e80101 n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xa80101)
#41 0x0000000000e80b6d n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0xa80b6d)
#42 0x0000000000dd3bcf n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x9d3bcf)
#43 0x00007fd167610088 __libc_start_call_main (libc.so.6 + 0x2a088)
#44 0x00007fd16761014b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a14b)
#45 0x0000000000d2717e n/a (/var/home/pervoj/.nvm/versions/node/v21.7.2/bin/node + 0x92717e)
ELF object binary architecture: AMD x86-64
Here is my code:
import gi from "node-gtk";
const Gio = gi.require("Gio", "2.0");
const Gtk = gi.require("Gtk", "4.0");
const Adw = gi.require("Adw", "1");
class Win extends Adw.ApplicationWindow {
static GTypeName = "Win";
constructor(app) {
super({ application: app });
this.setTitle("Node GTK App");
const label = new Gtk.Label({ label: "Hello Gtk+" });
this.setContent(label);
}
}
class App extends Adw.Application {
static GTypeName = "App";
constructor() {
super({
application_id: "cz.pervoj.NodeGtkTest",
flags: Gio.ApplicationFlags.FLAGS_NONE,
});
// this.on("activate", () => this.onActivate());
}
activate() {
(this.activeWindow ?? new Win(this)).present();
}
}
gi.registerClass(Win);
gi.registerClass(App);
const app = new App();
app.run(process.argv.slice(2));
I believe this is not new and this is a reason why all examples use the signal.