diamondburned/gotk4

GtkApplication? crash

krab opened this issue · 3 comments

krab commented

Hi there. First of all, im new to Golang. I tried to make simple application with fake go "classes" abusing type structs and it always crashing after gtk_application_window_new. Regular hello world examples work just fine. However, GDB backtrace show something about gtk_style_provider_get_settings.

package main

import (
	"github.com/diamondburned/gotk4/pkg/gio/v2"
	"github.com/diamondburned/gotk4/pkg/gtk/v4"
	"os"
)

type MainWindow struct {
	window *gtk.ApplicationWindow
}
type App struct {
	application *gtk.Application
	mainWindow  *MainWindow
}

func main() {
	app := NewApp()
	app.ConnectSignals()
	app.Run()
}

//gtk.Application

func (a *App) init() *App {
	a.application = gtk.NewApplication("com.example.test", gio.ApplicationFlagsNone)
	a.mainWindow = NewMainWindow(a.application)
	return a
}

func NewApp() *App {
	return new(App).init()
}

func (a *App) ConnectSignals() {
	a.application.ConnectStartup(func() { a.mainWindow.Construct(a.application) })
	a.application.ConnectActivate(func() { a.mainWindow.Show() })
}

func (a *App) Run() {
	if code := a.application.Run(os.Args); code > 0 {
		os.Exit(code)
	}
}

//gtk.ApplicationWindow

func (m *MainWindow) init(app *gtk.Application) *MainWindow {
	m.window = gtk.NewApplicationWindow(app)
	m.window.SetTitle("Test")
	m.window.SetDefaultSize(300, 420)
	return m
}

func NewMainWindow(app *gtk.Application) *MainWindow {
	return new(MainWindow).init(app)
}

func (m *MainWindow) Construct(app *gtk.Application) {
	var mainBox = gtk.NewBox(gtk.OrientationVertical, 8)
	mainBox.SetMarginStart(8)
	mainBox.SetMarginEnd(8)
	mainBox.SetMarginBottom(8)
	mainBox.SetMarginTop(8)
	mainBox.SetVisible(true)

	var topBox = gtk.NewBox(gtk.OrientationVertical, 8)
	topBox.SetVisible(true)

	var comboBox = gtk.NewComboBoxText()
	comboBox.SetVisible(true)

	mainBox.Append(topBox)
	m.window.SetChild(mainBox)
}

func (m *MainWindow) Show() {
	m.window.Show()
}

Run crash:

GOROOT=/home/krab/sdk/go1.19.5 #gosetup
GOPATH=/home/krab/go #gosetup
/home/krab/sdk/go1.19.5/bin/go build -o /tmp/GoLand/___go_build___run gotk4testapp #gosetup
/tmp/GoLand/___go_build___run
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7f36047009c5]

runtime stack:
runtime.throw({0x95c5cb?, 0xf8c617ca22947700?})
        /home/krab/sdk/go1.19.5/src/runtime/panic.go:1047 +0x5d fp=0x7ffca7aa7390 sp=0x7ffca7aa7360 pc=0x58391d
runtime.sigpanic()
        /home/krab/sdk/go1.19.5/src/runtime/signal_unix.go:819 +0x369 fp=0x7ffca7aa73e0 sp=0x7ffca7aa7390 pc=0x5995e9

goroutine 1 [syscall]:
runtime.cgocall(0x7abe80, 0xc00010de98)
        /home/krab/sdk/go1.19.5/src/runtime/cgocall.go:158 +0x5c fp=0xc00010de70 sp=0xc00010de38 pc=0x5509fc
github.com/diamondburned/gotk4/pkg/gtk/v4._Cfunc_gtk_application_window_new(0x20cc0e0)
        _cgo_gotypes.go:8244 +0x49 fp=0xc00010de98 sp=0xc00010de70 pc=0x6dbba9
github.com/diamondburned/gotk4/pkg/gtk/v4.NewApplicationWindow.func1(0xce7160?)
        /home/krab/go/pkg/mod/github.com/diamondburned/gotk4/pkg@v0.0.4/gtk/v4/gtkapplicationwindow.go:193 +0x3a fp=0xc00010ded0 sp=0xc00010de98 pc=0x6f1e5a
github.com/diamondburned/gotk4/pkg/gtk/v4.NewApplicationWindow(0xc0000120a8)
        /home/krab/go/pkg/mod/github.com/diamondburned/gotk4/pkg@v0.0.4/gtk/v4/gtkapplicationwindow.go:193 +0x46 fp=0xc00010df00 sp=0xc00010ded0 pc=0x6f1ca6
main.(*MainWindow).init(0xc000015b50, 0x10?)
        /home/krab/GolandProjects/gotk4testapp/gotk4testapp.go:49 +0x25 fp=0xc00010df28 sp=0xc00010df00 pc=0x7801c5
main.NewMainWindow(...)
        /home/krab/GolandProjects/gotk4testapp/gotk4testapp.go:56
main.(*App).init(0xc0001599c0)
        /home/krab/GolandProjects/gotk4testapp/gotk4testapp.go:27 +0x65 fp=0xc00010df58 sp=0xc00010df28 pc=0x77ff25
main.NewApp(...)
        /home/krab/GolandProjects/gotk4testapp/gotk4testapp.go:32
main.main()
        /home/krab/GolandProjects/gotk4testapp/gotk4testapp.go:18 +0x2a fp=0xc00010df80 sp=0xc00010df58 pc=0x77fe8a
runtime.main()
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:250 +0x212 fp=0xc00010dfe0 sp=0xc00010df80 pc=0x586232
runtime.goexit()
        /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00010dfe8 sp=0xc00010dfe0 pc=0x5b25e1

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:363 +0xd6 fp=0xc00003efb0 sp=0xc00003ef90 pc=0x5865f6
runtime.goparkunlock(...)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:369
runtime.forcegchelper()
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:302 +0xad fp=0xc00003efe0 sp=0xc00003efb0 pc=0x58648d
runtime.goexit()
        /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00003efe8 sp=0xc00003efe0 pc=0x5b25e1
created by runtime.init.6
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:290 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:363 +0xd6 fp=0xc00003f790 sp=0xc00003f770 pc=0x5865f6
runtime.goparkunlock(...)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
        /home/krab/sdk/go1.19.5/src/runtime/mgcsweep.go:278 +0x8e fp=0xc00003f7c8 sp=0xc00003f790 pc=0x57154e
runtime.gcenable.func1()
        /home/krab/sdk/go1.19.5/src/runtime/mgc.go:178 +0x26 fp=0xc00003f7e0 sp=0xc00003f7c8 pc=0x566206
runtime.goexit()
        /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00003f7e8 sp=0xc00003f7e0 pc=0x5b25e1
created by runtime.gcenable
        /home/krab/sdk/go1.19.5/src/runtime/mgc.go:178 +0x6b

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc000066000?, 0x9ac750?, 0x1?, 0x0?, 0x0?)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:363 +0xd6 fp=0xc00003ff70 sp=0xc00003ff50 pc=0x5865f6
runtime.goparkunlock(...)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:369
runtime.(*scavengerState).park(0xce6d60)
        /home/krab/sdk/go1.19.5/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc00003ffa0 sp=0xc00003ff70 pc=0x56f5f3
runtime.bgscavenge(0x0?)
        /home/krab/sdk/go1.19.5/src/runtime/mgcscavenge.go:617 +0x45 fp=0xc00003ffc8 sp=0xc00003ffa0 pc=0x56fbc5
runtime.gcenable.func2()
        /home/krab/sdk/go1.19.5/src/runtime/mgc.go:179 +0x26 fp=0xc00003ffe0 sp=0xc00003ffc8 pc=0x5661a6
runtime.goexit()
        /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00003ffe8 sp=0xc00003ffe0 pc=0x5b25e1
created by runtime.gcenable
        /home/krab/sdk/go1.19.5/src/runtime/mgc.go:179 +0xaa

goroutine 5 [finalizer wait]:
runtime.gopark(0xce7160?, 0xc000007860?, 0x0?, 0x0?, 0xc00003e770?)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:363 +0xd6 fp=0xc00003e628 sp=0xc00003e608 pc=0x5865f6
runtime.goparkunlock(...)
        /home/krab/sdk/go1.19.5/src/runtime/proc.go:369
runtime.runfinq()
        /home/krab/sdk/go1.19.5/src/runtime/mfinal.go:180 +0x10f fp=0xc00003e7e0 sp=0xc00003e628 pc=0x56528f
runtime.goexit()
        /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00003e7e8 sp=0xc00003e7e0 pc=0x5b25e1
created by runtime.createfing
        /home/krab/sdk/go1.19.5/src/runtime/mfinal.go:157 +0x45

Process finished with the exit code 2

GDB backtrace full:

[krab@fedora ~]$ gdb /tmp/GoLand/___go_build___run
GNU gdb (GDB) Fedora Linux 12.1-7.fc37
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /tmp/GoLand/___go_build___run...
warning: File "/home/krab/sdk/go1.19.5/src/runtime/runtime-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /home/krab/sdk/go1.19.5/src/runtime/runtime-gdb.py
line to your configuration file "/home/krab/.config/gdb/gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/krab/.config/gdb/gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
(gdb) r
Starting program: /tmp/GoLand/___go_build___run 

This GDB supports auto-downloading debuginfo from the following URLs:
https://debuginfod.fedoraproject.org/ 
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffcc6ee6c0 (LWP 19796)]
[New Thread 0x7fffcbd8d6c0 (LWP 19797)]
[New Thread 0x7fffcad4b6c0 (LWP 19799)]
[New Thread 0x7fffcb54c6c0 (LWP 19798)]
[New Thread 0x7fffca50a6c0 (LWP 19800)]
[New Thread 0x7fffc9d096c0 (LWP 19801)]

Thread 1 "___go_build___r" received signal SIGSEGV, Segmentation fault.
0x00007ffff77009c5 in gtk_style_provider_get_settings (provider=0x0) at ../gtk/gtkstyleprovider.c:136
136	  iface = GTK_STYLE_PROVIDER_GET_INTERFACE (provider);
(gdb) bt full
#0  0x00007ffff77009c5 in gtk_style_provider_get_settings (provider=0x0) at ../gtk/gtkstyleprovider.c:136
        iface = <optimized out>
        settings = <optimized out>
#1  gtk_css_value_initial_compute (value=<optimized out>, property_id=1, provider=0x0, style=0xdb9c30, parent_style=0x0) at ../gtk/gtkcssinitialvalue.c:52
        settings = <optimized out>
#2  0x00007ffff7706012 in _gtk_css_initial_value_new_compute (parent_style=0x0, style=0xdb9c30, provider=0x0, property_id=1) at ../gtk/gtkcssinitialvalue.c:134
        value = <optimized out>
        border_style = <optimized out>
#3  gtk_css_static_style_compute_value (style=style@entry=0xdb9c30, provider=provider@entry=0x0, parent_style=parent_style@entry=0x0, id=1, specified=0x0, section=0x0)
    at ../gtk/gtkcssstaticstyle.c:1097
        value = <optimized out>
        border_style = <optimized out>
#4  0x00007ffff770b392 in gtk_css_core_values_new_compute (lookup=0x7fffffffbf40, parent_style=0x0, provider=0x0, sstyle=0xdb9c30) at ../gtk/gtkcssstaticstyle.c:245
        id = <optimized out>
        style = 0xdb9c30
        i = 1
        style = 0xdb9c30
        result = 0xdb9c30
        lookup = {set_values = 0x1, values = {{section = 0x0, value = 0x0} <repeats 92 times>}}
        parent = <optimized out>
#5  gtk_css_lookup_resolve (parent_style=<optimized out>, sstyle=0xdb9c30, provider=0x0, lookup=0x7fffffffbf40) at ../gtk/gtkcssstaticstyle.c:934
        style = 0xdb9c30
        result = 0xdb9c30
        lookup = {set_values = 0x1, values = {{section = 0x0, value = 0x0} <repeats 92 times>}}
        parent = <optimized out>
#6  gtk_css_static_style_new_compute (provider=provider@entry=0x0, filter=filter@entry=0x7fffffffc540, node=node@entry=0x0, change=<optimized out>, change@entry=0)
    at ../gtk/gtkcssstaticstyle.c:1026
        result = 0xdb9c30
        lookup = {set_values = 0x1, values = {{section = 0x0, value = 0x0} <repeats 92 times>}}
        parent = <optimized out>
#7  0x00007ffff770b4c9 in gtk_css_static_style_get_default () at ../gtk/gtkcssstaticstyle.c:711
        filter = {buckets = '\000' <repeats 4095 times>}
        settings = 0x0
#8  0x00007ffff76fb03f in gtk_css_node_init (cssnode=0xdb9ab0) at ../gtk/gtkcssnode.c:641
#9  0x00007ffff7d860a3 in g_type_create_instancePython Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
 (type=) at ../gobject/gtype.c:1925
        pnode = <optimized out>
        node = 0xdc8000
        instance = 0xdb9ab0
--Type <RET> for more, q to quit, c to continue without paging--
Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
        class = 
        allocated = <optimized out>
        private_size = <optimized out>
        ivar_size = <optimized out>
        i = <optimized out>
#10 0x00007ffff7d6bc20 in g_object_new_internal (class=class@entry=0xdc8220, params=params@entry=0x0, n_params=n_params@entry=0) at ../gobject/gobject.c:2228
        nqueue = 0x0
        object = <optimized out>
        i = <optimized out>
        __func__ = "g_object_new_internal"
#11 0x00007ffff7d6d248 in g_object_new_with_propertiesPython Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
 (object_type=, n_properties=<optimized out>, names=names@entry=0x0, values=values@entry=0x0)
    at ../gobject/gobject.c:2391
        class = 0xdc8220
        unref_class = 0xdc8220
        object = <optimized out>
        __func__ = "g_object_new_with_properties"
#12 0x00007ffff7d6dff1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x0) at ../gobject/gobject.c:2037
        object = <optimized out>

                    var_args = {{gp_offset = 4153075278, fp_offset = 32767, overflow_arg_area = 0x7ffff7d83951 <g_type_register_static+257>, reg_save_area = 0x7ffff7d474c0 <private_thread_memory>}}
#13 0x00007ffff76b615d in gtk_css_widget_node_new (widget=0xdc62c0) at ../gtk/gtkcsswidgetnode.c:160
        result = <optimized out>
        widget = 0xdc62c0
        priv = 0xdc6170
        layout_manager_type = <optimized out>
        controller = <optimized out>
#14 gtk_widget_init (instance=0xdc62c0, g_class=0xdc5440) at ../gtk/gtkwidget.c:2345
        widget = 0xdc62c0
        priv = 0xdc6170
        layout_manager_type = <optimized out>
        controller = <optimized out>
#15 0x00007ffff7d860a3 in g_type_create_instancePython Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
 (type=) at ../gobject/gtype.c:1925
        pnode = <optimized out>
        node = 0xd83f30
        instance = 0xdc62c0
Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
        class = 
        allocated = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        private_size = <optimized out>
        ivar_size = <optimized out>
        i = <optimized out>
#16 0x00007ffff7d6bc20 in g_object_new_internal (class=class@entry=0xdc5440, params=params@entry=0x7fffffffdaf0, n_params=n_params@entry=1) at ../gobject/gobject.c:2228
        nqueue = 0x0
        object = <optimized out>
        i = <optimized out>
        __func__ = "g_object_new_internal"
#17 0x00007ffff7d6d973 in g_object_new_valist
    (object_type=<optimized out>, first_property_name=first_property_name@entry=0x7ffff78b692d "application", var_args=var_args@entry=0x7fffffffddc0)
    at ../gobject/gobject.c:2567

                  vtabs_stack = {0xd35c40, 0x7ffff7ffe2c0, 0xf6a, 0xcbeb68 <gtk_application_window_new@got[plt]>, 0x8, 0xc0000061a0, 0xffffffffffffffff, 0x7ffff7fd85a2 <_dl_fixup+258>, 0x5, 0x0, 0x7ffff7426a80, 0x7ffff74c1960 <gtk_application_window_new>, 0x100da9c70, 0x7fffffffde80, 0xc00012de60, 0xc00012e000}
        params = 0x7fffffffdaf0
        values = 0x7fffffffdbf0

                    params_stack = {{pspec = 0xd7a110, value = 0x7fffffffdbf0}, {pspec = 0xc00012e000, value = 0xc00012de98}, {pspec = 0xc00012de30, value = 0xce6e00 <runtime.g0>}, {pspec = 0xdb50e0, value = 0xce7160 <runtime.m0>}, {pspec = 0x0, value = 0xd2e208}, {pspec = 0x400, value = 0x7ffff705eb3b <_int_memalign+347>}, {pspec = 0x9, value = 0xffff00001fa0}, {pspec = 0x3f0, value = 0x7ffff7197c80 <main_arena>}, {pspec = 0x5, value = 0xd2e208}, {pspec = 0x50, value = 0x7ffff705f0c6 <_mid_memalign+102>}, {pspec = 0x7f0, value = 0x7ffff70606f3 <__posix_memalign+67>}, {pspec = 0x400, value = 0x7fffffffdbe0}, {pspec = 0x3f0, value = 0x7ffff70606f3 <__posix_memalign+67>}, {pspec = 0x60, value = 0x7ffff705e4a7 <_int_malloc+3399>}, {pspec = 0xdb0c00, value = 0x7ffff705e4a7 <_int_malloc+3399>}, {pspec = 0x0, value = 0x0}}
Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str

                        values_stack = {{g_type = , data = {{v_int = 14373088, v_uint = 14373088, v_long = 14373088, v_ulong = 14373088, v_int64 = 14373088, v_uint64 = 14373088, v_float = 2.01409861e-38, v_double = 7.1012490054530706e-317, v_pointer = 0xdb50e0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}, {g_type = <error reading variable: Cannot access memory at address 0x747365742e656c98>, data = {{v_int = 1697541487, v_uint = 1697541487, v_long = 8101238474430901615, v_ulong = 8101238474430901615, v_int64 = 8101238474430901615, v_uint64 = 8101238474430901615, v_float = 5.14819038e+22, v_double = 3.6491308474968204e+233, v_pointer = 0x706d6178652e6d6f}, {v_int = 1949197676, v_uint = 1949197676, v_long = 32777976876524908, v_ulong = 32777976876524908, v_int64 = 32777976876524908, v_uint64 = 32777976876524908, v_float = 5.52683553e+31, v_double = 1.8201786648489699e-306, v_pointer = 0x747365742e656c}}}, {g_type = , data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 14171648, v_uint = 14171648, v_long = 14171648, v_ulong = 14171648, v_int64 = 14171648, v_uint64 = 14171648, v_float = 1.98587086e-38, v_double = 7.0017244217548099e-317, v_pointer = 0xd83e00}}}, {g_type = <error reading variable: Cannot access memory at address 0xf000003c0>, data = {{v_int = 14171648, v_uint = 14171648, v_long = 14171648, v_ulong = 14171648, v_int64 = 14171648, v_uint64 = 14171648, v_float = 1.98587086e-38, v_double = 7.0017244217548099e-317, v_pointer = 0xd83e00}, {v_int = 918, v_uint = 918, v_long = 55834575766, v_ulong = 55834575766, v_int64 = 55834575766, v_uint64 = 55834575766, v_float = 1.28639199e-42, v_double = 2.7585945736100803e-313, v_pointer = 0xd00000396}}}, {g_type = 0xd42040 [None], data = {{v_int = 916, v_uint = 916, v_long = 47244641172, v_ulong = 47244641172, v_int64 = 47244641172, v_uint64 = 47244641172, v_float = 1.28358939e-42, v_double = 2.3341954153182127e-313, v_pointer = 0xb00000394}, {v_int = 13901888, v_uint = 13901888, v_long = 13901888, v_ulong = 13901888, v_int64 = 13901888, v_uint64 = 13901888, v_float = 1.94806943e-38, v_double = 6.8684452731326752e-317, v_pointer = 0xd42040}}}, {g_type = <error reading variable: Cannot access memory at address 0x9000003b8>, data = {{v_int = 331686, v_uint = 331686, v_long = 824634052518, v_ulong = 824634052518, v_int64 = 824634052518, v_uint64 = 824634052518, v_float = 4.64791082e-40, v_double = 4.0742335573999009e-312, v_pointer = 0xc000050fa6}, {v_int = 331704, v--Type <RET> for more, q to quit, c to continue without paging--
_uint = 331704, v_long = 824634052536, v_ulong = 824634052536, v_int64 = 824634052536, v_uint64 = 824634052536, v_float = 4.64816306e-40, v_double = 4.0742335574888327e-312, v_pointer = 0xc000050fb8}}}, {g_type = 0x0, data = {{v_int = 5973473, v_uint = 5973473, v_long = 5973473, v_ulong = 5973473, v_int64 = 5973473, v_uint64 = 5973473, v_float = 8.37061854e-39, v_double = 2.9512877956602485e-317, v_pointer = 0x5b25e1 <runtime.goexit+1>}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}, {g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}, {g_type = <error reading variable: Cannot access memory at address 0x61726b2f656d6f90>, data = {{v_int = 1814966114, v_uint = 1814966114, v_long = 7809632559044636514, v_ulong = 7809632559044636514, v_int64 = 7809632559044636514, v_uint64 = 7809632559044636514, v_float = 8.42307406e+26, v_double = 1.1707577171380033e+214, v_pointer = 0x6c61636f6c2e2f62}, {v_int = 1634235183, v_uint = 1634235183, v_long = 5345602824646980399, v_ulong = 5345602824646980399, v_int64 = 5345602824646980399, v_uint64 = 5345602824646980399, v_float = 2.6799653e+20, v_double = 2.2942854797749019e+49, v_pointer = 0x4a2f65726168732f}}}, {g_type = <error reading variable: Cannot access memory at address 0x736e69617242748c>, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}, {g_type = 0xdb1b80 [None], data = {{v_int = 62592, v_uint = 62592, v_long = 62592, v_ulong = 62592, v_int64 = 62592, v_uint64 = 62592, v_float = 8.77100735e-41, v_double = 3.0924556904495304e-319, v_pointer = 0xf480}, {v_int = -149324672, v_uint = 4145642624, v_long = 140737339030656, v_ulong = 140737339030656, v_int64 = 140737339030656, v_uint64 = 140737339030656, v_float = -3.11307258e+33, v_double = 6.9533484302159532e-310, v_pointer = 0x7ffff7197c80 <main_arena>}}}, {g_type = , data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = -150602794, v_uint = 4144364502, v_long = 140737337752534, v_ulong = 140737337752534, v_int64 = 140737337752534, v_uint64 = 140737337752534, v_float = -2.71751298e+33, v_double = 6.953348367068336e-310, v_pointer = 0x7ffff705fbd6 <__libc_calloc+214>}}}, {g_type = 0x0, data = {{v_int = -150608729, v_uint = 4144358567, v_long = 140737337746599, v_ulong = 140737337746599, v_int64 = 140737337746599, v_uint64 = 140737337746599, v_float = -2.71567618e+33, v_double = 6.9533483667751081e-310, v_pointer = 0x7ffff705e4a7 <_int_malloc+3399>}, {v_int = 14350048, v_uint = 14350048, v_long = 14350048, v_ulong = 14350048, v_int64 = 14350048, v_uint64 = 14350048, v_float = 2.01087002e-38, v_double = 7.0898657329728883e-317, v_pointer = 0xdaf6e0}}}, {g_type = 0x18, data = {{v_int = 2, v_uint = 2, v_long = 2, v_ulong = 2, v_int64 = 2, v_uint64 = 2, v_float = 2.80259693e-45, v_double = 9.8813129168249309e-324, v_pointer = 0x2}, {v_int = 32, v_uint = 32, v_long = 32, v_ulong = 32, v_int64 = 32, v_uint64 = 32, v_float = 4.48415509e-44, v_double = 1.5810100666919889e-322, v_pointer = 0x20}}}, {g_type = 0x2, data = {{v_int = 6, v_uint = 6, v_long = -9223372036854775802, v_ulong = 9223372036854775814, v_int64 = -9223372036854775802, v_uint64 = 9223372036854775814, v_float = 8.40779079e-45, v_double = -2.9643938750474793e-323, v_pointer = 0x8000000000000006}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}, {g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}}
        name = <optimized out>
        vtabs = 0x7fffffffda70
        n_params = <optimized out>
        n_params_alloc = 16
        class = 0xdc5440
        unref_class = <optimized out>
        object = <optimized out>
        __func__ = "g_object_new_valist"
#18 0x00007ffff7d6dfcd in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x7ffff78b692d "application")
    at ../gobject/gobject.c:2040
        object = <optimized out>
        var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffdea0, reg_save_area = 0x7fffffffdde0}}
#19 0x00007ffff74c19aa in gtk_application_window_new (application=<optimized out>) at ../gtk/gtkapplicationwindow.c:705
--Type <RET> for more, q to quit, c to continue without paging--
        __func__ = "gtk_application_window_new"
#20 0x00000000007abe97 in _cgo_c35492872015_Cfunc_gtk_application_window_new (v=0xc00012de98) at /tmp/go-build/cgo-gcc-prolog:125
        _cgo_a = 0xc00012de98
        _cgo_stktop = 0xc00012e000 ""
        _cgo_r = <optimized out>
#21 0x00000000005b22a4 in runtime.asmcgocall () at /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:844
#22 0x00007fffffffdef8 in  ()
#23 0x0000000000565cb5 in runtime.SetFinalizer.func2 () at /home/krab/sdk/go1.19.5/src/runtime/mfinal.go:450
        e = 0x0
        f = 0x0
        nret = 14392368
        fint = 0x0
        ot = 0x1
#24 0x00000000005b0429 in runtime.systemstack () at /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:492
#25 0x00000000005b4bc5 in runtime.newproc (fn=0x1) at <autogenerated>:1
#26 0x0000000000ce6e00 in runtime.g0 ()
#27 0x0000000000000001 in  ()
#28 0x00000000005b0325 in runtime.mstart () at /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:390
#29 0x00000000005b02af in runtime.rt0_go () at /home/krab/sdk/go1.19.5/src/runtime/asm_amd64.s:354
#30 0x0000000000000001 in  ()
#31 0x00007fffffffe078 in  ()
#32 0x00007fffffffe088 in  ()
#33 0x0000000000000001 in  ()
#34 0x00007fffffffe078 in  ()
#35 0x00007ffff6feb510 in __libc_start_call_main (main=main@entry=0x5b0160 <main>, argc=1, argc@entry=1236576, argv=0x7fffffffe078, argv@entry=0xc00012de98)
    at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>

                      unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737488347256, -3295557397527693681, 0, 140737488347272, 13331792, 140737354125312, 3295557398618535567, 3295572784087398031}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fffffffe078, 0x1}, data = {prev = 0x0, cleanup = 0x0, canceltype = -8072}}}
        not_first_call = <optimized out>
#36 0x00007ffff6feb5c9 in __libc_start_main_impl
     (main=0x5b0160 <main>, argc=1236576, argv=0xc00012de98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe068)
    at ../csu/libc-start.c:381
#37 0x000000000054d115 in _start ()
(gdb) 

This code is really hard to read for me. Perhaps try looking at the hackernews example for how class-based applications are usually done. You're not really supposed to have an init() at all, and the Construct is kind of redundant.

Also, call NewApplicationWindow only within activate. All the examples should suggest that.

Examples are at https://github.com/diamondburned/gotk4-examples. Consider moving this issue there. I'm closing this one for now, since this issue doesn't really have to do with the bindings. Feel free to reopen it if you believe it's a bindings issue rather than something to do with your code.

krab commented

Well i see now what's going on. GTKMM version has Gtk::ApplicationWindow no-param constructor version. And Gtk::Application pointer can be set via https://docs.gtk.org/gtk4/method.Window.set_application.html after.