Running wingide 4.1.3 with oxygen-gtk2theme selected will crash every time certain dialogs are closed (for instance start/continue or project properties).
This happens since 1.2.2 and onwards, also with today's git version. It does not happen in oxygen-gtk2 1.2.0.
No other theme causes this, the program works fine under all other gtk themes.
This happens with wingide professional 4.1.3. So far I haven't found any other dialog in another app where this happens (but I don't use many gtk2 apps).
The program wing.py received an X Window System error.
This probably reflects a bug in the program.
The error was BadWindow (invalid Window parameter).
(Details: serial 31563 error_code 3 request_code 152 minor_code 3)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
This happens under x86-64 architecture. Could not reproduce bug using 32 bit libs and apps on the same system.
Please use git-bisect to find the guilty commit.
*** Bug 295966 has been marked as a duplicate of this bug. ***
I suspect fe399f97bd478a33241a5a4213498072292ce841
To be the guilty guy. (basically reverting compositing on a window that has been already destroyed).
Can someone that experience the bug
1/ get oxygen gtk from source
git clone git://anongit.kde.org/oxygen-gtk
2/ checkout before the commit before
git checkout fe399f97bd478a33241a5a4213498072292ce841^
(don't forget the "^")
3/ compile and see if the bug is still there
4/ checkout the revision: git checkout fe399f97bd478a33241a5a4213498072292ce841
5/ compile and see if the bug is here.
Note: if this indeed is the bug, the fix (that does not break gtk-chtheme) would be either
- find a way to check the validity of the window before reverting compositing (might be difficult)
- not reverting compositing in destructor (disconnect)
- revert everything manually in theme exit (for lxappearance or gth-chtheme)
I sure can work on that but need confirmation first.
(In reply to comment #5)
If you mean that the problem is our gdk_window_set_composited(window,_initiallyComposited), then it's strange that we get BadWindow after GDK_IS_WINDOW returns true.
Also, I'd rather see which request fails using --sync option to GTK program and breaking on gdk_x_error().
might be an underlying gtk issue
GdkWindow still exists, but underlying X window is gone (unmapped or smthing like that)
then crash when gdk_window_set_composite (or whatever the name) try access the X window to change the "composite" flag ... something like that.
(iirc, I've seen this happen for other calls)
(In reply to comment #7)
It seems you might be right. There's a gdk_window_is_destroyed() function, so maybe we should check it before setting composite state.
Git commit d6c4de90902a005fc14e55c1789bec276dbfcdf0 by Ruslan Kabatsayev.
Committed on 14/03/2012 at 12:04.
Pushed by kabatsayev into branch '1.2'.
Check if GdkWindow is destroyed before restoring composited state
M +1 -1 src/animations/oxygeninnershadowdata.cpp
Although I'd like to have confirmation for comment #4
Thanks for the commit anyway ! (can't hurt)
without your commit (forward ported to gtk3), gtk3-demo was crashing at exit (likely with the same issue), and is not anymore. Most likely your fix works !
OK, I mark this fixed. If it appears to not be, please reopen.
I confirm the original issue is fixed. Thanks!
*** Bug 296082 has been marked as a duplicate of this bug. ***