Re: [java-gnome-hackers] Duplicating assertion `GDK_IS_WINDOW (window)' failed crash
Brought to you by:
afcowie
From: Andrew C. <an...@op...> - 2010-12-20 14:02:16
|
On Tue, 2010-12-21 at 00:05 +1100, Andrew Cowie wrote: > I still don't have any insight into what's going on with Ok, I've made some progress. Attached to that bug is a short test program which demonstrates the problem. The insight from speeing up the GC was that it was pressing Ins that triggered it. Weird; what's a popup menu got to do with disappearing TextViews? And then I realized that there aren't many places in my program, Quill, which actually create Proxy objects for GdkWindows. the call which does that is Widget's getWindow() and the context menu code in Quill is the only place that happens. This afternoon I spent a couple hours trying to write a multithreaded program which would demonstrate the crash, but unsuccessfully. Tonight, with Guillaume's help, I narrowed it down to a simple program. The catch is you need something which creates org.gnome.gdk.Window proxy for something other than the top level Window; many GtkWidgets actually draw on that top level GtkWindow's GdkWindow [the whole 'client-side-windows' branch that was merged to GTK about 2.18]. So, if you create a [org.gnome.gdk] Window that can be finalized seperately from the top level, the program will crash. See https://bugzilla.gnome.org/show_bug.cgi?id=637132#c6 or http://paste.pocoo.org/show/307378/ So. The question is: what the hell is wrong with our GdkWindow proxies? AfC P.S. Interesting different WARNINGs if you do this: assert (underlying != parent.getWindow()); |