Skip to content

[BUG] Binding many properties of an object leads to a SIGABRT crash #1869

@Daru-san

Description

@Daru-san

Bug description

I am writing a program that needs to continuously bind and unbind properties of one object to the properties of multiple other objects.

Using Object::bind_property, this eventually leads to a core dump with SIGABRT.

An representation of how the bindings are created is shown below. The bind function may be called multiple times in the same minute, for different instances of SomeObject but the same instance of MusicPlayer.

Even if the frequency at which bind is called is reduced, after about 5 calls, spaced out between multiple minutes, the program still crashes.

fn bind(player: &MusicPlayer, object: &SomeObject) {
    player
        .bind_property("title", object, "prop-1")
        .sync_create()
        .build();
    player
        .bind_property("artist", object, "prop-2")
        .sync_create()
        .build();
    player
        .bind_property("album", object, "prop-3")
        .sync_create()
        .build();
    player
        .bind_property("album-artist", object, "prop-4")
        .sync_create()
        .build();
}

Backtrace

The provided logs have been routed through tracing.

2025-12-22T08:57:50.319536Z ERROR backend::gtk: Too many GWeakRef registered
2025-12-22T08:57:50.319555Z ERROR scarlet: **
GLib-GObject:ERROR:../gobject/gbinding.c:805:g_binding_constructed: assertion failed: (source != NULL)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions