GNOME Bugzilla – Bug 719730
UserWidget: replace vfunc_destroy override with a signal connection
Last modified: 2013-12-02 23:07:02 UTC
The crash we were talking about in IRC today. I got a backtrace confirming that it was a spontaneous GC in the main thread, and I got a JS trace pointing to vfunc_destroy() called in an apparently impossible context.
Created attachment 263349 [details] [review] UserWidget: replace vfunc_destroy override with a signal connection The destroy vfunc might be called during object finalization, and we can't call any JS from a GC finalizer, so we use a signal connection instead, as that is removed by GObject the first time the object is disposed.
Review of attachment 263349 [details] [review]: Ah, yes. Probably gjs should outright ban connecting to GObject::destroy.
(In reply to comment #2) > Ah, yes. Probably gjs should outright ban connecting to GObject::destroy. It's ClutterActor::destroy. We don't have a generic destroy signal/vfunc.
(In reply to comment #3) > (In reply to comment #2) > > Ah, yes. Probably gjs should outright ban connecting to GObject::destroy. > > It's ClutterActor::destroy. We don't have a generic destroy signal/vfunc. Er, right, I was thinking of dispose.
Pushed (git bz failed)