Skip to content

Widgets no longer being freed after 3.5.1 #211

Closed
@gnunn1

Description

@gnunn1

In Tilix I've added some code ages ago to various high level widget destructors that outputs whether the destructor is called or not. I should be paying more attention to this on GtkD version updates, however I was looking into memory usage recently and noticed a change in behavior starting with 3.6.0.

In 3.5.1 if I close a tiled terminal then execute a GC collection a couple of times I can see the various destructors (VTE, Terminal) being called as expected. However starting in 3.6.0 this no longer happens and the destructors are not called until the program terminates. Now I know that in D destructors are not guarenteed to be called but I use this as a rough barometer with regards to whether I'm leaking objects.

Looking at the changes made between the two versions, there is one thing that sticks out to me. In commit 4b491f5, the event listeners array were changed from being class members to static members of the wrapper. I was wondering if this could be causing a reference to the delegate being held onto to since it never gets removed from the static unless explicitly removed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions