Segment fault with g_param_spec_object in class_init method

I have a Vala project which uses libpeas and I have discovered that it segment faults. I traced the error to this generated block of code and down to the first g_param_spec_object call:

TROSS-MAC:genesis tristan$ head -n 785 builddir/plugins/gtk3/libgenesis-shell-gtk3.so.p/src/provider/monitor.c | tail -n 16
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    genesis_shell_gtk3_monitor_provider_parent_class = g_type_class_peek_parent (klass);
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    g_type_class_adjust_private_offset (klass, &GenesisShellGtk3MonitorProvider_private_offset);
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    G_OBJECT_CLASS (klass)->get_property = _vala_genesis_shell_gtk3_monitor_provider_get_property;
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    G_OBJECT_CLASS (klass)->set_property = _vala_genesis_shell_gtk3_monitor_provider_set_property;
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    G_OBJECT_CLASS (klass)->constructor = genesis_shell_gtk3_monitor_provider_constructor;
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    G_OBJECT_CLASS (klass)->finalize = genesis_shell_gtk3_monitor_provider_finalize;
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    g_object_class_install_property (G_OBJECT_CLASS (klass), GENESIS_SHELL_GTK3_MONITOR_PROVIDER_CONTEXT_PROPERTY, genesis_shell_gtk3_monitor_provider_properties[GENESIS_SHELL_GTK3_MONITOR_PROVIDER_CONTEXT_PROPERTY] = g_param_spec_object ("context", "context", "context", GENESIS_SHELL_TYPE_CONTEXT, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
#line 2 "../plugins/gtk3/src/provider/monitor.vala"
    g_object_class_install_property (G_OBJECT_CLASS (klass), GENESIS_SHELL_GTK3_MONITOR_PROVIDER_PLUGIN_PROPERTY, genesis_shell_gtk3_monitor_provider_properties[GENESIS_SHELL_GTK3_MONITOR_PROVIDER_PLUGIN_PROPERTY] = g_param_spec_object ("plugin", "plugin", "plugin", GENESIS_SHELL_GTK3_TYPE_PLUGIN, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));

The segment fault in question looks like this:

Process 66262 launched: '/Users/tristan/ExpidusOS/genesis/builddir/shell/genesis-shell' (x86_64)
(process:66262): Devident-DEBUG: 16:49:30.875: Discovered plugin devident-xml
(process:66262): Devident-DEBUG: 16:49:30.876: Adding plugin "devident-xml" 0x101f07f90
(process:66262): Devident-DEBUG: 16:49:30.876: Adding provider "DevidentXmlProvider" 0x101f08210
(process:66262): Devident-DEBUG: 16:49:30.876: context.vala:27: Global context uses libpeas
(process:66262): GenesisShell-DEBUG: 16:49:30.876: context.vala:230: Adding plugins path 0, lib: ./builddir/plugins, data: ./builddir/plugins
(process:66262): GenesisShell-DEBUG: 16:49:30.876: Genesis Shell context 0x103017090 is running in mode options
(process:66262): GenesisShell-DEBUG: 16:49:30.876: Plugin genesis-shell-gtk3 found in engine, trying to load
(process:66262): TokyoGtk-DEBUG: 16:49:31.211: init.vala:17: Initializing Tokyo GTK
2022-10-17 16:49:31.234505-0700 genesis-shell[66262:6494991] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=66262
2022-10-17 16:49:31.234573-0700 genesis-shell[66262:6494991] SecTaskCopyDebugDescription: genesis-shell[66262]/0#-1 LF=0
(<unknown>:66262): GLib-GIO-DEBUG: 16:49:31.493: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
(<unknown>:66262): Handy-DEBUG: 16:49:31.553: Trying to initialize portal
(<unknown>:66262): Handy-DEBUG: 16:49:31.554: Settings portal not found: Cannot spawn a message bus without a machine-id: Unable to load /nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id or /etc/machine-id: Failed to open file “/nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id”: No such file or directory

(<unknown>:66262): GLib-GIO-CRITICAL **: 16:49:31.555: g_settings_schema_source_lookup: assertion 'source != NULL' failed

(<unknown>:66262): GLib-GIO-CRITICAL **: 16:49:31.555: g_settings_schema_source_lookup: assertion 'source != NULL' failed
(<unknown>:66262): TokyoGtk-DEBUG: 16:49:31.636: stylemanager.vala:29: registering for display tross-mac.local
(<unknown>:66262): TokyoGtk-DEBUG: 16:49:31.636: stylemanager.vala:51: Using night theme on display tross-mac.local
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Discovered plugin genesis-shell-gtk3
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Adding plugin "genesis-shell-gtk3" 0x103019910
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Plugin genesis-shell-gtk3 found in engine, trying to unload
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Discovered plugin genesis-shell-gtk3
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: context.vala:230: Adding plugins path 0, lib: ./builddir/plugins, data: ./builddir/plugins
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Genesis Shell context 0x10203e900 is running in mode big-picture
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Plugin genesis-shell-gtk3 found in engine, trying to load
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Discovered plugin genesis-shell-gtk3
(<unknown>:66262): GenesisShell-DEBUG: 16:49:31.721: Adding plugin "genesis-shell-gtk3" 0x11b844790
Process 66262 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2609634)
    frame #0: 0x00000001002d621b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
libgobject-2.0.0.dylib`type_node_check_conformities_UorL:
->  0x1002d621b <+43>: movl   0x14(%rax), %edx
    0x1002d621e <+46>: andl   $0xff, %edx
    0x1002d6224 <+52>: cmpl   %edx, %ecx
    0x1002d6226 <+54>: jg     0x1002d626e               ; <+126>
Target 0: (genesis-shell) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2609634)
  * frame #0: 0x00000001002d621b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
    frame #1: 0x00000001002d234c libgobject-2.0.0.dylib`type_node_conforms_to_U + 44
    frame #2: 0x00000001002cc4ca libgobject-2.0.0.dylib`g_type_is_a + 122
    frame #3: 0x00000001002bd80a libgobject-2.0.0.dylib`g_param_spec_object + 42
    frame #4: 0x0000000100aa6ddd libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_class_init(klass=0x0000600003004900, klass_data=0x0000000000000000) at monitor.vala:2:216
    frame #5: 0x00000001002d12f9 libgobject-2.0.0.dylib`type_class_init_Wm + 1593
    frame #6: 0x00000001002cd49e libgobject-2.0.0.dylib`g_type_class_ref + 334
    frame #7: 0x00000001002ae010 libgobject-2.0.0.dylib`g_object_new_valist + 176
    frame #8: 0x00000001002adc62 libgobject-2.0.0.dylib`g_object_new + 402
    frame #9: 0x0000000100aa6adc libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_construct(object_type=105553156162784, plugin=0x000000011b844790, cancellable=0x0000000000000000, error=0x00007ff7bfef2d70) at monitor.vala:18:44
    frame #10: 0x0000000100aa6bad libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_new(plugin=0x000000011b844790, cancellable=0x0000000000000000, error=0x00007ff7bfef2d70) at monitor.vala:17:9
    frame #11: 0x0000000100aa4518 libgenesis-shell-gtk3.so`genesis_shell_gtk3_plugin_real_activate(base=0x000000011b844790, cancellable=0x0000000000000000, error=0x00000001030282b0) at plugin.vala:14:12
    frame #12: 0x000000010020208e libgenesis.0.dylib`genesis_shell_plugin_activate(self=0x000000011b844790, cancellable=0x0000000000000000, error=0x00000001030282b0) at plugin.vala:31:3
    frame #13: 0x00000001001fb891 libgenesis.0.dylib`genesis_shell_context_do_plugin_added_co(_data_=0x0000000103028160) at context.vala:320:6
    frame #14: 0x00000001001fb079 libgenesis.0.dylib`genesis_shell_context_do_plugin_added(self=0x000000010203e900, info=0x0000600003518000, plugin=0x000000011b844790, cancellable=0x0000000000000000, _callback_=(libgenesis.0.dylib`___lambda16__gasync_ready_callback at context.c:1385), _user_data_=0x00000001045b5f60) at context.vala:89:2
    frame #15: 0x00000001001fc19d libgenesis.0.dylib`__lambda15_(self=0x000000010203e900, info=0x0000600003518000, obj=0x000000011b844790) at context.vala:253:2
    frame #16: 0x00000001001fab7c libgenesis.0.dylib`___lambda15__peas_extension_set_extension_added(_sender=0x000000011b85ad60, info=0x0000600003518000, exten=0x000000011b844790, self=0x000000010203e900) at context.vala:252:2
    frame #17: 0x000000010024af90 libpeas-1.0.0.dylib`peas_cclosure_marshal_VOID__BOXED_OBJECT + 240
    frame #18: 0x00000001002a301a libgobject-2.0.0.dylib`g_closure_invoke + 570
    frame #19: 0x00000001002c5d1d libgobject-2.0.0.dylib`signal_emit_unlocked_R + 1581
    frame #20: 0x00000001002c7941 libgobject-2.0.0.dylib`g_signal_emit_valist + 5521
    frame #21: 0x00000001002c82cf libgobject-2.0.0.dylib`g_signal_emit + 383
    frame #22: 0x00000001002522d1 libpeas-1.0.0.dylib`add_extension + 225
    frame #23: 0x00000001002a9876 libgobject-2.0.0.dylib`g_cclosure_marshal_VOID__BOXED + 262
    frame #24: 0x00000001002a301a libgobject-2.0.0.dylib`g_closure_invoke + 570
    frame #25: 0x00000001002c605e libgobject-2.0.0.dylib`signal_emit_unlocked_R + 2414
    frame #26: 0x00000001002c7941 libgobject-2.0.0.dylib`g_signal_emit_valist + 5521
    frame #27: 0x00000001002c82cf libgobject-2.0.0.dylib`g_signal_emit + 383
    frame #28: 0x000000010024c455 libpeas-1.0.0.dylib`peas_engine_load_plugin + 341
    frame #29: 0x00000001001fa86d libgenesis.0.dylib`genesis_shell_context_common_init(self=0x000000010203e900, error=0x000000011b8446c0) at context.vala:278:10
    frame #30: 0x00000001001f9db5 libgenesis.0.dylib`genesis_shell_context_real_init_async_co(_data_=0x000000011b844680) at context.vala:191:2
    frame #31: 0x00000001001f9b86 libgenesis.0.dylib`genesis_shell_context_real_init_async(base=0x000000010203e900, io_pri=0, cancellable=0x0000000000000000, _callback_=(libgenesis.0.dylib`genesis_shell_context_new_async_ready at context.c:697), _user_data_=0x000000011b82a000) at context.vala:89:2
    frame #32: 0x000000010049777c libgio-2.0.0.dylib`g_async_initable_init_async + 252
    frame #33: 0x00000001001f75e9 libgenesis.0.dylib`genesis_shell_context_construct_async_co(_data_=0x000000011b82a000) at context.vala:147:2
    frame #34: 0x00000001001f743e libgenesis.0.dylib`genesis_shell_context_construct_async(object_type=105553156150816, mode=GENESIS_SHELL_CONTEXT_MODE_BIG_PICTURE, cancellable=0x0000000000000000, _callback_=(genesis-shell`run_ready at main.c:168), _user_data_=0x000000011b81e2e0) at context.vala:145:2
    frame #35: 0x00000001001f77a3 libgenesis.0.dylib`genesis_shell_context_new_async(mode=GENESIS_SHELL_CONTEXT_MODE_BIG_PICTURE, cancellable=0x0000000000000000, _callback_=(genesis-shell`run_ready at main.c:168), _user_data_=0x000000011b81e2e0) at context.vala:145:2
    frame #36: 0x0000000100002cc8 genesis-shell`run_co(_data_=0x000000011b81e2e0) at main.vala:12:3
    frame #37: 0x0000000100002b13 genesis-shell`run(argv0="/Users/tristan/ExpidusOS/genesis/builddir/shell/genesis-shell", mode=GENESIS_SHELL_CONTEXT_MODE_BIG_PICTURE, loop=0x000060000000d300, _callback_=(genesis-shell`___lambda5__gasync_ready_callback at main.c:341), _user_data_=0x0000000000000000) at main.c:129:2
    frame #38: 0x00000001000037d1 genesis-shell`_vala_main(args=0x00007ff7bfef4c60, args_length1=1) at main.vala:63:2
    frame #39: 0x0000000100003092 genesis-shell`main(argc=3, argv=0x00007ff7bfef4c60) at main.vala:20:9
    frame #40: 0x000000010000c52e dyld`start + 462

The type it is trying to pull is this one GenesisShellContext from the GenesisShellGtk3MonitorManager. I have never seen this kind of failure before and so I am unsure of the solution. Looking at other projects which use libpeas, it appears I am the only one with this issue.

I am currently on my mac but I can get a Linux version of the segment fault in a few hours. Edit: this appears to not occur on Linux.

Can you post the backtrace of the crash?

I already did, scroll down in the 2nd codeblock.

This is really strange. The crash happens inside the type system. So something is messed up there.

Yeah, and the weirdest thing is that it only happens on macOS. On my Linux systems, there are no issues.

Try to make a minimal reproducer. It could be a bug in libpeas or glib.

There’s really not enough context to give you an answer, I’m afraid.

Are you trying to unload a plugin and then re-loading it?

Yeah, so the plugin is loaded in a context set that’s specific for parsing arguments. Each context has their own Peas.Engine with nonglobal_loaders. Unfortunately, Vala seems to not unref completely the first context so that may be an issue.

What do you mean “unref the first context”? You mean you expect to register the same type multiple times? Because that’s not supported by the type system—the fact that it may appear to work is mostly a fluke.

No, so this is the main function. So the ctx in the try {} catch () {} block should be unreferenced after it is used. As it is no longer used outside the try loop, it should be unreferenced but I placed a GLib.debug method in the finalize method and the message was never printed with G_MESSAGES_DEBUG=all. So this means Vala or something else isn’t letting the context go.

I have discovered this problem still occurs when I do not unload and reload. Types are not being registered again, just a reactivation of a plugin which is just a method.

(process:91874): GLib-GIO-DEBUG: 10:30:17.512: _g_io_module_get_default: Found default implementation nextstep (GNextstepSettingsBackend) for ?gsettings-backend?
(process:91874): Devident-DEBUG: 10:30:17.553: Discovered plugin devident-xml
(process:91874): Devident-DEBUG: 10:30:17.553: Adding plugin "devident-xml" 0x101d08700
(process:91874): Devident-DEBUG: 10:30:17.553: Adding provider "DevidentXmlProvider" 0x101d08720
(process:91874): Devident-DEBUG: 10:30:17.553: context.vala:27: Global context uses libpeas
(process:91874): GenesisShell-DEBUG: 10:30:17.553: Genesis Shell context 0x102817120 is running in mode options
(process:91874): GenesisShell-DEBUG: 10:30:17.553: Plugin genesis-shell-gtk3 found in engine, trying to load
(process:91874): TokyoGtk-DEBUG: 10:30:17.817: init.vala:17: Initializing Tokyo GTK
2022-10-19 10:30:17.837966-0700 .genesis-shell-wrapped[91874:6918678] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=91874
2022-10-19 10:30:17.838043-0700 .genesis-shell-wrapped[91874:6918678] SecTaskCopyDebugDescription: .genesis-shell-w[91874]/0#-1 LF=0
(<unknown>:91874): GLib-GIO-DEBUG: 10:30:18.211: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
(<unknown>:91874): Handy-DEBUG: 10:30:18.262: Trying to initialize portal
(<unknown>:91874): Handy-DEBUG: 10:30:18.262: Settings portal not found: Cannot spawn a message bus without a machine-id: Unable to load /nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id or /etc/machine-id: Failed to open file “/nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id”: No such file or directory
(<unknown>:91874): TokyoGtk-DEBUG: 10:30:18.344: stylemanager.vala:29: registering for display tross-mac.local
(<unknown>:91874): TokyoGtk-DEBUG: 10:30:18.344: stylemanager.vala:51: Using night theme on display tross-mac.local
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.428: Discovered plugin genesis-shell-gtk3
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.428: Skipping plugin "genesis-shell-gtk3", not in correct plugin mode
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.428: context.vala:231: Reloading Genesis Shell from mode options to mode big-picture
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.428: Discovered plugin genesis-shell-gtk3

(<unknown>:91874): GenesisShell-WARNING **: 10:30:18.428: context.vala:480: Plugin "Genesis Shell Gtk3" is already added
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.441: Genesis Shell context 0x102817120 is running in mode big-picture
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.441: Discovered plugin genesis-shell-gtk3
(<unknown>:91874): GenesisShell-DEBUG: 10:30:18.441: Adding plugin "genesis-shell-gtk3" 0x102818a00
Process 91874 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2609634)
    frame #0: 0x00000001002ca21b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
libgobject-2.0.0.dylib`type_node_check_conformities_UorL:
->  0x1002ca21b <+43>: movl   0x14(%rax), %edx
    0x1002ca21e <+46>: andl   $0xff, %edx
    0x1002ca224 <+52>: cmpl   %edx, %ecx
    0x1002ca226 <+54>: jg     0x1002ca26e               ; <+126>
Target 0: (.genesis-shell-wrapped) stopped.
(lldb) bt
\* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2609634)
  * frame #0: 0x00000001002ca21b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
    frame #1: 0x00000001002c634c libgobject-2.0.0.dylib`type_node_conforms_to_U + 44
    frame #2: 0x00000001002c04ca libgobject-2.0.0.dylib`g_type_is_a + 122
    frame #3: 0x00000001002b180a libgobject-2.0.0.dylib`g_param_spec_object + 42
    frame #4: 0x00000001006ae2cd libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_class_init + 221
    frame #5: 0x00000001002c52f9 libgobject-2.0.0.dylib`type_class_init_Wm + 1593
    frame #6: 0x00000001002c149e libgobject-2.0.0.dylib`g_type_class_ref + 334
    frame #7: 0x00000001002a2010 libgobject-2.0.0.dylib`g_object_new_valist + 176
    frame #8: 0x00000001002a1c62 libgobject-2.0.0.dylib`g_object_new + 402
    frame #9: 0x00000001006adfcc libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_construct + 140
    frame #10: 0x00000001006ae09d libgenesis-shell-gtk3.so`genesis_shell_gtk3_monitor_provider_new + 45
    frame #11: 0x00000001006ab888 libgenesis-shell-gtk3.so`genesis_shell_gtk3_plugin_real_activate + 296
    frame #12: 0x000000010020189e libgenesis.0.dylib`genesis_shell_plugin_activate + 126
    frame #13: 0x00000001001fa73e libgenesis.0.dylib`genesis_shell_context_do_plugin_added_co + 4862
    frame #14: 0x00000001001f8559 libgenesis.0.dylib`genesis_shell_context_do_plugin_added + 489
    frame #15: 0x00000001001f7565 libgenesis.0.dylib`genesis_shell_context_real_init_async_co + 917
    frame #16: 0x00000001001f70b6 libgenesis.0.dylib`genesis_shell_context_real_init_async + 246
    frame #17: 0x000000010083977c libgio-2.0.0.dylib`g_async_initable_init_async + 252
    frame #18: 0x00000001001f4026 libgenesis.0.dylib`genesis_shell_context_reload_async_co + 2182
    frame #19: 0x00000001001f50bd libgenesis.0.dylib`genesis_shell_context_reload_async_ready + 61
    frame #20: 0x00000001008d9e14 libgio-2.0.0.dylib`g_task_return_now + 84
    frame #21: 0x00000001008d9e68 libgio-2.0.0.dylib`complete_in_idle_cb + 24
    frame #22: 0x00000001004b2ccf libglib-2.0.0.dylib`g_idle_dispatch + 79
    frame #23: 0x00000001004b8149 libglib-2.0.0.dylib`g_main_dispatch + 441
    frame #24: 0x00000001004b7f80 libglib-2.0.0.dylib`g_main_context_dispatch + 48
    frame #25: 0x00000001004b84e2 libglib-2.0.0.dylib`g_main_context_iterate + 466
    frame #26: 0x00000001004b8a1b libglib-2.0.0.dylib`g_main_loop_run + 603
    frame #27: 0x0000000100003379 .genesis-shell-wrapped`_vala_main + 2649
    frame #28: 0x0000000100002912 .genesis-shell-wrapped`main + 34
    frame #29: 0x000000010000c52e dyld`start + 462

Trying to write some unit tests to see if this is with my plugin loading or if its with GLib. Just need this libpeas issue to be resolved.

Ok, with some meson trickery I got a test that looks like this:

public static int main(string[] args) {
  Gtk.test_init(ref args);
  TokyoGtk.init();

  GLib.Test.add_func("/mode/big-picture", () => {
    try {
      var context = new GenesisShell.Context(GenesisShell.ContextMode.BIG_PICTURE);
      var plugin = new GenesisShellGtk3.Plugin(context);
      plugin.activate();
    } catch (GLib.Error e) {
      GLib.error("%s:%d: %s", e.domain.to_string(), e.code, e.message);
    }
  });

  return GLib.Test.run();
}

When it runs:

# random seed: R02S6e1ed448c9d3d93830ff49ccbb38f56b
# TokyoGtk-DEBUG: init.vala:17: Initializing Tokyo GTK
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
# Handy-DEBUG: Trying to initialize portal
# Handy-DEBUG: Settings portal not found: Cannot spawn a message bus without a machine-id: Unable to load /nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id or /etc/machine-id: Failed to open file ?/nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id?: No such file or directory
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation nextstep (GNextstepSettingsBackend) for ?gsettings-backend?
# TokyoGtk-DEBUG: stylemanager.vala:29: registering for display tross-mac.local
# TokyoGtk-DEBUG: stylemanager.vala:51: Using night theme on display tross-mac.local
1..1
# Start of mode tests
# Devident-DEBUG: Discovered plugin devident-xml
# Devident-DEBUG: Adding plugin "devident-xml" 0x7fda1142c900
# Devident-DEBUG: Adding provider "DevidentXmlProvider" 0x7fda1142c920
# Devident-DEBUG: context.vala:27: Global context uses libpeas
# GenesisShell-DEBUG: Genesis Shell context 0x7fd9e1021310 is running in mode big-picture
# DEBUG: main.vala:10: (null)
Bail out! GLib-GObject-FATAL-CRITICAL: g_object_new_valist: assertion 'G_TYPE_IS_OBJECT (object_type)' failed

(./builddir/plugins/gtk3/tests/test-main:72570): GLib-GObject-CRITICAL **: 10:21:59.471: g_object_new_valist: assertion 'G_TYPE_IS_OBJECT (object_type)' failed
Trace/BPT trap: 5

I’ve tracked the error to plugins/gtk3/src/plugin.vala:6 which is the object creation call. For some odd reason, types are not working correctly on macOS. I can test this unit test on Linux later today.

Edit: fixed that and got the same crash so this is not a problem with libpeas

# random seed: R02S70ec8c1570bd416be2bb96a2e081f823
2022-10-21 10:40:09.015814-0700 test-main[96976:9246576] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=96976
2022-10-21 10:40:09.015887-0700 test-main[96976:9246576] SecTaskCopyDebugDescription: test-main[96976]/0#-1 LF=0
# TokyoGtk-DEBUG: init.vala:17: Initializing Tokyo GTK
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
# Handy-DEBUG: Trying to initialize portal
# Handy-DEBUG: Settings portal not found: Cannot spawn a message bus without a machine-id: Unable to load /nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id or /etc/machine-id: Failed to open file ?/nix/store/s074aph9jwhs6cqsiqnm1mx25w4nv5r6-glib-2.72.3/var/lib/dbus/machine-id?: No such file or directory
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation nextstep (GNextstepSettingsBackend) for ?gsettings-backend?
# TokyoGtk-DEBUG: stylemanager.vala:29: registering for display tross-mac.local
# TokyoGtk-DEBUG: stylemanager.vala:51: Using night theme on display tross-mac.local
1..1
# Start of mode tests
# Devident-DEBUG: Discovered plugin devident-xml
# Devident-DEBUG: Adding plugin "devident-xml" 0x103588760
# Devident-DEBUG: Adding provider "DevidentXmlProvider" 0x103588780
# Devident-DEBUG: context.vala:27: Global context uses libpeas
# GenesisShell-DEBUG: Genesis Shell context 0x10385ab10 is running in mode big-picture
# DEBUG: main.vala:11: GenesisShellGtk3Plugin GenesisShellPlugin
Process 96976 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2628794)
    frame #0: 0x000000010030421b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
libgobject-2.0.0.dylib`type_node_check_conformities_UorL:
->  0x10030421b <+43>: movl   0x14(%rax), %edx
    0x10030421e <+46>: andl   $0xff, %edx
    0x100304224 <+52>: cmpl   %edx, %ecx
    0x100304226 <+54>: jg     0x10030426e               ; <+126>
Target 0: (test-main) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x2628794)
  * frame #0: 0x000000010030421b libgobject-2.0.0.dylib`type_node_check_conformities_UorL + 43
    frame #1: 0x000000010030034c libgobject-2.0.0.dylib`type_node_conforms_to_U + 44
    frame #2: 0x00000001002fa4ca libgobject-2.0.0.dylib`g_type_is_a + 122
    frame #3: 0x00000001002eb80a libgobject-2.0.0.dylib`g_param_spec_object + 42
    frame #4: 0x000000010024037d libgenesis-shell-gtk3.dylib`genesis_shell_gtk3_monitor_provider_class_init(klass=0x0000600003018870, klass_data=0x0000000000000000) at monitor.vala:2:216
    frame #5: 0x00000001002ff2f9 libgobject-2.0.0.dylib`type_class_init_Wm + 1593
    frame #6: 0x00000001002fb49e libgobject-2.0.0.dylib`g_type_class_ref + 334
    frame #7: 0x00000001002dc010 libgobject-2.0.0.dylib`g_object_new_valist + 176
    frame #8: 0x00000001002dbc62 libgobject-2.0.0.dylib`g_object_new + 402
    frame #9: 0x000000010024001c libgenesis-shell-gtk3.dylib`genesis_shell_gtk3_monitor_provider_construct(object_type=105553156293568, plugin=0x00000001038424c0, cancellable=0x0000000000000000, error=0x00007ff7bfef40b0) at monitor.vala:18:44
    frame #10: 0x00000001002400ed libgenesis-shell-gtk3.dylib`genesis_shell_gtk3_monitor_provider_new(plugin=0x00000001038424c0, cancellable=0x0000000000000000, error=0x00007ff7bfef40b0) at monitor.vala:17:9
    frame #11: 0x000000010023d771 libgenesis-shell-gtk3.dylib`genesis_shell_gtk3_plugin_real_activate(base=0x00000001038424c0, cancellable=0x0000000000000000, error=0x00007ff7bfef4170) at plugin.vala:23:13
    frame #12: 0x000000010020d95e libgenesis.0.dylib`genesis_shell_plugin_activate(self=0x00000001038424c0, cancellable=0x0000000000000000, error=0x00007ff7bfef4170) at plugin.vala:31:3
    frame #13: 0x0000000100002ca7 test-main`__lambda4_ at main.vala:13:3
    frame #14: 0x0000000100002bd9 test-main`___lambda4__gtest_func at main.vala:8:2
    frame #15: 0x0000000100530972 libglib-2.0.0.dylib`test_case_run + 690
    frame #16: 0x000000010052d489 libglib-2.0.0.dylib`g_test_run_suite_internal + 233
    frame #17: 0x000000010052d5c1 libglib-2.0.0.dylib`g_test_run_suite_internal + 545
    frame #18: 0x000000010052c0f2 libglib-2.0.0.dylib`g_test_run_suite + 226
    frame #19: 0x000000010052be93 libglib-2.0.0.dylib`g_test_run + 99
    frame #20: 0x0000000100002b9e test-main`_vala_main(args=0x00007ff7bfef4550, args_length1=1) at main.vala:19:11
    frame #21: 0x0000000100002b22 test-main`main(argc=1, argv=0x00007ff7bfef4550) at main.vala:1:9
    frame #22: 0x000000010000a52e dyld`start + 462

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.