Xpra: Ticket #167: MATLAB (close all) crashes xpra

Hello,

When running matlab, with multiple windows (with charts), if you run the "close all" command that is supposed to close all charts, xpra crashes.

To reproduce it: Start matlab, and display a graph, plot(rand(1,100), for example and then type 'close all'.

I attached the log on the server side. on the client side, it mainly says that the connection has been lost



Fri, 13 Jul 2012 16:14:39 GMT - Punx120: attachment set

Traceback on the server


Fri, 13 Jul 2012 16:15:34 GMT - Antoine Martin: status changed

unless someone can arrange for me to be able to test matlab, I am going to have close this as 'wontfit' (for lack of a 'cantfix')


Fri, 13 Jul 2012 16:20:35 GMT - Antoine Martin:

This may or may not help... no way for me to test, please let me know:

--- src/wimpiggy/window.py	(revision 1089)
+++ src/wimpiggy/window.py	(working copy)
@@ -761,7 +761,7 @@
         # their properties every time they see a ConfigureNotify, and this
         # reduces the chance for us to get caught in loops:
         old_hints = self.get_property("size-hints")
-        if old_hints is None or size_hints.__dict__ != old_hints.__dict__:
+        if size_hints and (old_hints is None or size_hints.__dict__ != old_hints.__dict__):
             self._internal_set_property("size-hints", size_hints)
             self._update_client_geometry()

Fri, 13 Jul 2012 16:55:08 GMT - Punx120:

the python stack trace disappeared, but Gdk still crashes.

Gdk-ERROR **: The program 'xpra' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
  (Details: serial 17321 error_code 9 request_code 14 minor_code 0)
  (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.)

I can't easily debug the program, but maybe I can something so it would publish the backtrace ?


Fri, 13 Jul 2012 16:57:58 GMT - Antoine Martin:

Yes, the backtrace might help.

For details please see the X11 debugging section from here - ignore the GTK3 thing, you do need GDK_SYNCHRONIZE="1" even for gtk2 IIRC (xpra does not understand "--sync")


Fri, 13 Jul 2012 17:15:35 GMT - Punx120:

I attached the backtrace. I'm running pygtk 2.16, I don't have the package for newer version ...


Fri, 13 Jul 2012 17:15:50 GMT - Punx120: attachment set

backtrace


Fri, 13 Jul 2012 17:18:03 GMT - Antoine Martin:

wait... I remember removing some compatibility code for pygtk older than ~2.17... maybe you are hitting it. Is RHEL really shipping such an old version??

Pasting the trace here:

#0  0x0000003889032885 in raise () from /lib64/libc.so.6
#1  0x0000003889034065 in abort () from /lib64/libc.so.6
#2  0x000000388a84337a in g_logv () from /lib64/libglib-2.0.so.0
#3  0x000000388a843413 in g_log () from /lib64/libglib-2.0.so.0
#4  0x000000357d668196 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#5  0x000000388f046b24 in _XError () from /usr/lib64/libX11.so.6
#6  0x000000388f04d656 in _XReply () from /usr/lib64/libX11.so.6
#7  0x000000388f028d70 in XGetGeometry () from /usr/lib64/libX11.so.6
#8  0x000000357d672a95 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#9  0x000000357d63ddac in gdk_window_get_geometry () from /usr/lib64/libgdk-x11-2.0.so.0
#10 0x00007f29047b5f7a in ?? () from /usr/lib64/python2.6/site-packages/gtk-2.0/gtk/_gtk.so
#11 0x000000357b2de726 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#12 0x000000357b2e0467 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#13 0x000000357b26eac0 in ?? () from /usr/lib64/libpython2.6.so.1.0
#14 0x000000357b244043 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#15 0x000000357b25941f in ?? () from /usr/lib64/libpython2.6.so.1.0
#16 0x000000357b244043 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#17 0x000000357b2d8aa3 in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.6.so.1.0
#18 0x00007f290550cbcd in ?? () from /usr/lib64/python2.6/site-packages/gtk-2.0/gobject/_gobject.so
#19 0x000000388b40bb3e in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#20 0x000000388b420e23 in ?? () from /lib64/libgobject-2.0.so.0
#21 0x00007f290550489e in ?? () from /usr/lib64/python2.6/site-packages/gtk-2.0/gobject/_gobject.so
#22 0x000000357b244043 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#23 0x00007f2903479bec in __pyx_pf_8wimpiggy_8lowlevel_8bindings_77_maybe_send_event (__pyx_self=<value optimized out>, __pyx_args=<value optimized out>,
    __pyx_kwds=<value optimized out>) at wimpiggy/lowlevel/bindings.c:20013
#24 0x000000357b244043 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#25 0x00007f290349824f in __pyx_pf_8wimpiggy_8lowlevel_8bindings_78_route_event (__pyx_self=<value optimized out>, __pyx_args=<value optimized out>,
    __pyx_kwds=<value optimized out>) at wimpiggy/lowlevel/bindings.c:20339
#26 0x000000357b244043 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#27 0x00007f29034887e4 in __pyx_f_8wimpiggy_8lowlevel_8bindings_x_event_filter (__pyx_v_e_gdk=0x7fff8ee8c290, __pyx_v_gdk_event=<value optimized out>,
    __pyx_v_userdata=<value optimized out>) at wimpiggy/lowlevel/bindings.c:23054
#28 0x000000357d65d9a6 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#29 0x000000357d65fa98 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#30 0x000000357d65ffce in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#31 0x000000388a838f0e in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#32 0x000000388a83c938 in ?? () from /lib64/libglib-2.0.so.0
#33 0x000000388a83cd55 in g_main_loop_run () from /lib64/libglib-2.0.so.0
#34 0x000000357cf4c2c7 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
#35 0x00007f2904798666 in ?? () from /usr/lib64/python2.6/site-packages/gtk-2.0/gtk/_gtk.so
#36 0x000000357b2de726 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#37 0x000000357b2df99f in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#38 0x000000357b2e0467 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#39 0x000000357b2de8b4 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#40 0x000000357b2e0467 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#41 0x000000357b2de8b4 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#42 0x000000357b2e0467 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#43 0x000000357b2e0542 in PyEval_EvalCode () from /usr/lib64/libpython2.6.so.1.0
#44 0x000000357b2fb88c in ?? () from /usr/lib64/libpython2.6.so.1.0
#45 0x000000357b2fb960 in PyRun_FileExFlags () from /usr/lib64/libpython2.6.so.1.0
#46 0x000000357b2fce4c in PyRun_SimpleFileExFlags () from /usr/lib64/libpython2.6.so.1.0
#47 0x000000357b3094cf in Py_Main () from /usr/lib64/libpython2.6.so.1.0
#48 0x000000388901ecdd in __libc_start_main () from /lib64/libc.so.6
#49 0x0000000000400649 in _start ()

Fri, 13 Jul 2012 17:19:44 GMT - Antoine Martin:

The fact that this is triggered by a call to get_geometry is reminiscent of #71...


Fri, 13 Jul 2012 17:28:49 GMT - Antoine Martin:

Does reverting r548 help?


Mon, 16 Jul 2012 15:39:50 GMT - Punx120:

I tried to revert r548, but it still crashes. I'm trying to install the debuginfo packages so we can have a better backtrace.


Thu, 27 Sep 2012 15:23:01 GMT - Antoine Martin: milestone changed

Does this still happen with 0.6 or trunk?

Can I close this?


Fri, 28 Sep 2012 23:48:27 GMT - Punx120:

I'm sorry I don't have access anymore to the system so I'm not able to tell you if it's working.


Sat, 29 Sep 2012 05:12:34 GMT - Antoine Martin: status changed; resolution set

OK closing, feel free to re-open.


Sat, 23 Jan 2021 04:47:21 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/167