Xpra: Ticket #901: Windows Client crash after locking screen

Versions:

Server started with:

Client started with:

Server is a Fedora 21 VM

Client machine is a MacBook? Pro running Windows 8.1 ('bootcamped'; not in a VM, I avoid OSX like the plague) with an Intel Iris Pro graphics chipset


Repro steps are pretty simple:


Result:

2015-06-29 16:11:33,776 unexpected message: WM_NULL / 0 / 0
2015-06-29 16:11:36,073 unexpected message: 798 / 0 / 0
2015-06-29 16:11:36,589 unexpected message: 798 / 0 / 0
2015-06-29 16:11:41,448 do_paint_rgb24 error
Traceback (most recent call last):
  File "xpra\client\window_backing_base.pyc", line 276, in do_paint_rgb24
  File "xpra\client\gl\gl_window_backing_base.pyc", line 563, in _do_paint_rgb24
  File "xpra\client\gl\gl_window_backing_base.pyc", line 658, in _do_paint_rgb
  File "xpra\client\gl\gl_window_backing_base.pyc", line 475, in present_fbo
  File "latebind.pyx", line 44, in OpenGL_accelerate.latebind.Curry.__call__ (c:
\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\src\latebind.c:1201)
  File "C:\Program Files (x86)\Xpra\OpenGL\GL\exceptional.py", line 41, in glBeg
in
WindowsError: exception: access violation writing 0x0B7A5000

Server outputs:

Disconnecting client '10.0.11.123:63039': client ping timeout (waited 60 seconds without a response)
xpra client disconnected.

And then after a minute or so:

2015-06-29 16:12:36,175 sound-source failed to encode packet: ['info', {'volume': 0, 'state': None, 'codec': '', 'codec_description': u'MPEG-1 Layer 3 (MP3)', 'pid': 10200, 'bytes': 5086536, 'pipeline': 'pulsesrc ! volume name=volume volume=1.0 ! lamemp3enc encoding-engine-quality=0 ! appsink name=sink emit-signals=true max-buffers=10 drop=true sync=false async=false qos=false', 'buffers': 48909}]
Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/xpra/net/protocol.py", line 482, in encode
    main_packet, proto_flags = self._encoder(packet)
  File "/usr/lib64/python2.7/site-packages/xpra/net/packet_encoding.py", line 64, in do_bencode
    return bencode(data), FLAGS_BENCODE
  File "xpra/net/bencode/cython_bencode.pyx", line 204, in xpra.net.bencode.cython_bencode.bencode (xpra/net/bencode/cython_bencode.c:4300)
ValueError: cannot encode '['info', {'volume': 0, 'state': None, 'codec': '', 'codec_description': u'MPEG-1 Layer 3 (MP3)', 'pid': 10200, 'bytes': 5086536, 'pipeline': 'pulsesrc ! volume name=volume volume=1.0 ! lamemp3enc encoding-engine-quality=0 ! appsink name=sink emit-signals=true max-buffers=10 drop=true sync=false async=false qos=false', 'buffers': 48909}]': found None value!

Not sure if the Bencode error is relevant or not.

In addition, this crash can be induced reliably; even with the same server session. Additional info can be provided upon request. However, I will be out of office from the 1st through the 15th, but I might be able to look at some stuff from home if I get the chance. If there's anything pressing I will keep an eye on my work email periodically(and will have this laptop with me), and if it's super pressing, Alex should be able to test this as well.



Mon, 29 Jun 2015 23:41:58 GMT - J. Max Mena: attachment set

The Firefox window I was greeted with upon unlocking the machine.


Tue, 30 Jun 2015 03:13:12 GMT - Antoine Martin: description changed

2015-06-29 16:12:36,175 sound-source failed to encode packet:


This one has already been fixed in r9727, and backported in r9752. This happens when we stop processing sound, as we do when the client is disconnected.

I would like to know why you end up using bencode though, rencode should come first.


WindowsError: exception: access violation writing 0x0B7A5000


My guess is that we aren't allowed to paint to the screen when the screensaver is active - or when the screen is turned off. That's not entirely clear from the timing of the log messages. The crash occurs exactly 5 minutes after the WM_NULL message, whatever that is. I would love to know what 798 is too.

It would be useful to know if that's a Windows 8+ "feature" or not, by testing with other versions. (also, confirming that this issue is not a regression - I every much doubt that is is, but you never know) Also useful: does this happen with opengl turned off?

Assuming that we can detect when the screensaver is active (or when the screen is turned off), we can skip present_fbo which should avoid the crash.


Sun, 30 Aug 2015 10:06:10 GMT - Antoine Martin: owner changed

There were some fixes in the memoryview and opengl areas. Can you still reproduce?


Thu, 17 Sep 2015 15:50:18 GMT - Antoine Martin:

If you can still reproduce it, please run with -d win32 and try to spot the win32 messages that correspond to going to sleep / activating the screensaver. (and also resuming if possible, you may need to turn off opengl to make it happen without crashing)

We could just minimize all the windows when we detect the event, and restore them later. Unmapped windows don't have an opengl context.


Fri, 18 Sep 2015 17:55:09 GMT - J. Max Mena:

Updated server to r10666 and client to r10655:

Actually, this is really starting to irritate me - that I cannot reproduce it.


Sat, 19 Sep 2015 03:05:55 GMT - Antoine Martin:

You should be able to lower the screen timeout so you don't have to wait 10 minutes to test.


Tue, 06 Oct 2015 20:32:00 GMT - J. Max Mena:

Output from client (with -d win32,auth), clipped to the last 5 minutes of session:

2015-10-06 13:25:28,871 callbacks for event WM_WININICHANGE: None
2015-10-06 13:25:28,871 WM_WININICHANGE: 20 / 582872
2015-10-06 13:26:36,526 win32 hooks: propsys=<module 'win32com.propsys.propsys'
from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'>
2015-10-06 13:26:36,526 hooked group leader override using <module 'win32com.pro
psys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'>
2015-10-06 13:26:36,526 win32 hooks: set_group(0x30350)
2015-10-06 13:26:36,526 win32 hooks: calling <built-in method SetValue of PyIPro
pertyStore object at 0x01F91B94>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'),
 5), <PyPROPVARIANT object at 0x0345FC78>)
2015-10-06 13:26:49,496 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x04F961B
0>>, <function activate_cb at 0x0500A0F0>, <function activate_cb at 0x05049130>,
 <function activate_cb at 0x05049B70>]
2015-10-06 13:26:49,496 WM_ACTIVATEAPP: 0/0 client=gtk2.client
2015-10-06 13:26:49,496 activate_cb(0, 0)
2015-10-06 13:26:49,496 readd_window_options() using unchanged style=0x16cf0000
on window 0xfe040a
2015-10-06 13:26:49,496 activate_cb(0, 0)
2015-10-06 13:26:49,496 readd_window_options() using unchanged style=0x16cf0000
on window 0x30350
2015-10-06 13:26:49,496 activate_cb(0, 0)
2015-10-06 13:26:49,496 readd_window_options() using new style=0x16cf0000 on win
dow 0x2503f8
2015-10-06 13:26:49,496 callbacks for event WM_WTSSESSION_CHANGE: None
2015-10-06 13:26:49,496 WM_WTSSESSION_CHANGE: 7 / 1
2015-10-06 13:27:55,180 server is not responding, drawing spinners over the wind
ows
2015-10-06 13:27:55,430 server is OK again
2015-10-06 13:27:58,529 callbacks for event WM_DEVICECHANGE: None
2015-10-06 13:27:58,529 WM_DEVICECHANGE: 7 / 0
2015-10-06 13:28:21,243 callbacks for event WM_DEVICECHANGE: None
2015-10-06 13:28:21,243 WM_DEVICECHANGE: 7 / 0
2015-10-06 13:28:22,917 callbacks for event WM_WTSSESSION_CHANGE: None
2015-10-06 13:28:22,917 WM_WTSSESSION_CHANGE: 8 / 1
2015-10-06 13:28:22,947 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x04F961B
0>>, <function activate_cb at 0x0500A0F0>, <function activate_cb at 0x05049130>,
 <function activate_cb at 0x05049B70>]
2015-10-06 13:28:22,947 WM_ACTIVATEAPP: 1/572 client=gtk2.client
2015-10-06 13:28:22,947 activate_cb(1, 572)
2015-10-06 13:28:22,947 readd_window_options() using unchanged style=0x16cf0000
on window 0xfe040a
2015-10-06 13:28:22,947 activate_cb(1, 572)
2015-10-06 13:28:22,947 readd_window_options() using new style=0x16cf0000 on win
dow 0x30350
2015-10-06 13:28:22,947 activate_cb(1, 572)
2015-10-06 13:28:22,947 readd_window_options() using unchanged style=0x16cf0000
on window 0x2503f8
2015-10-06 13:28:24,447 callbacks for event WM_NULL: None
2015-10-06 13:28:24,447 unknown reserved system message: WM_NULL / 0 / 0
2015-10-06 13:28:26,808 callbacks for event WM_DISPLAYCHANGE: None
2015-10-06 13:28:26,808 WM_DISPLAYCHANGE: 32 / 94374400
2015-10-06 13:28:27,244 callbacks for event WM_WINDOWPOSCHANGING: None
2015-10-06 13:28:27,244 WM_WINDOWPOSCHANGING: 0 / 1635504
2015-10-06 13:28:27,244 callbacks for event WM_NCCALCSIZE: None
2015-10-06 13:28:27,244 WM_NCCALCSIZE: 1 / 1635464
2015-10-06 13:28:27,244 callbacks for event WM_WINDOWPOSCHANGED: None
2015-10-06 13:28:27,244 WM_WINDOWPOSCHANGED: 0 / 1635504
2015-10-06 13:28:27,244 callbacks for event WM_NCCALCSIZE: None
2015-10-06 13:28:27,244 WM_NCCALCSIZE: 1 / 1634328
2015-10-06 13:28:27,260 callbacks for event 0x31e: None
2015-10-06 13:28:27,260 unknown reserved system message: 0x31e / 0 / 0
2015-10-06 13:28:27,558 callbacks for event screen background changed: None
2015-10-06 13:28:27,558 screen background changed: 8422655 / 1
2015-10-06 13:28:27,588 callbacks for event WM_WINDOWPOSCHANGING: None
2015-10-06 13:28:27,588 WM_WINDOWPOSCHANGING: 0 / 1635504
2015-10-06 13:28:27,588 callbacks for event WM_NCCALCSIZE: None
2015-10-06 13:28:27,605 WM_NCCALCSIZE: 1 / 1635464
2015-10-06 13:28:27,605 callbacks for event WM_WINDOWPOSCHANGED: None
2015-10-06 13:28:27,605 WM_WINDOWPOSCHANGED: 0 / 1635504
2015-10-06 13:28:27,605 callbacks for event WM_NCCALCSIZE: None
2015-10-06 13:28:27,605 WM_NCCALCSIZE: 1 / 1634328
2015-10-06 13:28:27,605 callbacks for event 0x31e: None
2015-10-06 13:28:27,605 unknown reserved system message: 0x31e / 0 / 0
2015-10-06 13:28:27,605 callbacks for event WM_DWMNCRENDERINGCHANGED: None
2015-10-06 13:28:27,605 WM_DWMNCRENDERINGCHANGED: 1 / 0
2015-10-06 13:28:27,792 get_workareas() GetMonitorInfo(<PyHANDLE:1179711>)={'Dev
ice': '\\\\.\\DISPLAY1', 'Work': (0, 0, 2560, 1400), 'Flags': 1, 'Monitor': (0,
0, 2560, 1440)}
2015-10-06 13:28:27,792 get_workareas()=[(0, 0, 2560, 1400)]
2015-10-06 13:28:27,792 get_workarea() absolute total monitor dimensions: (2560,
 1440)
2015-10-06 13:28:28,869 callbacks for event WM_WININICHANGE: None
2015-10-06 13:28:28,869 WM_WININICHANGE: 20 / 582872
2015-10-06 13:28:38,808 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x04F961B
0>>, <function activate_cb at 0x0500A0F0>, <function activate_cb at 0x05049130>,
 <function activate_cb at 0x05049B70>]
2015-10-06 13:28:38,808 WM_ACTIVATEAPP: 0/2236 client=gtk2.client
2015-10-06 13:28:38,808 activate_cb(0, 2236)
2015-10-06 13:28:38,808 readd_window_options() using unchanged style=0x16cf0000
on window 0xfe040a
2015-10-06 13:28:38,808 activate_cb(0, 2236)
2015-10-06 13:28:38,808 readd_window_options() using unchanged style=0x16cf0000
on window 0x30350
2015-10-06 13:28:38,808 activate_cb(0, 2236)
2015-10-06 13:28:38,808 readd_window_options() using unchanged style=0x16cf0000
on window 0x2503f8
2015-10-06 13:28:39,058 gtk2.GLWindowBacking(2, (1176, 882), YUV444P).gl_paint_p
lanar(..) error: GLError(
        err = 1282,
        description = 'invalid operation',
        baseOperation = glEnd,
        cArguments = ()
)
Traceback (most recent call last):
  File "xpra\client\gl\gl_window_backing_base.pyc", line 726, in gl_paint_planar
  File "xpra\client\gl\gl_window_backing_base.pyc", line 802, in render_planar_u
pdate
  File "latebind.pyx", line 44, in OpenGL_accelerate.latebind.Curry.__call__ (c:
\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\src\latebind.c:1201)
  File "C:\Program Files (x86)\Xpra\OpenGL\GL\exceptional.py", line 46, in glEnd
  File "errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChec
ker.glCheckError (c:\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\s
rc\errorchecker.c:1218)
GLError: GLError(
        err = 1282,
        description = 'invalid operation',
        baseOperation = glEnd,
        cArguments = ()
)
2015-10-06 13:28:42,855 do_paint_rgb32 error
Traceback (most recent call last):
  File "xpra\client\window_backing_base.pyc", line 308, in do_paint_rgb32
  File "xpra\client\gl\gl_window_backing_base.pyc", line 619, in _do_paint_rgb32
  File "xpra\client\gl\gl_window_backing_base.pyc", line 690, in _do_paint_rgb
  File "latebind.pyx", line 44, in OpenGL_accelerate.latebind.Curry.__call__ (c:
\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\src\latebind.c:1201)
  File "C:\Program Files (x86)\Xpra\OpenGL\GL\exceptional.py", line 46, in glEnd
  File "errorchecker.pyx", line 50, in OpenGL_accelerate.errorchecker._ErrorChec
ker.glCheckError (c:\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\s
rc\errorchecker.c:1121)
WindowsError: exception: access violation writing 0x0A535000}}}

Wed, 07 Oct 2015 02:43:38 GMT - Antoine Martin: owner, status changed

There are two events which we should be able to use:


Thu, 08 Oct 2015 09:15:10 GMT - Antoine Martin: owner, priority, status changed

Some preparatory / cleanup work in r10760 + a fix in r10761. (may backport those)

r10762 should fix this: we now iconify our windows when the session is locked on win32, so the windows are "umapped" and we close the OpenGL context. You will then have to unminimize them when you unlock.

Note: assuming that this does fix things for you (I understand it may take time to confirm as it is harder to confirm a negative result... side note: I believe a fast updating window like glxgears is more likely to trigger this problem), then we can:

I am raising the priority of this ticket because I would like to get some kind of fix in 0.15


Thu, 08 Oct 2015 22:31:46 GMT - J. Max Mena:

Upped client to r10765 (Win8.1):

Output from -d win32 (the tail end of it...most of the error print has overridden what was printed beforehand)

(edited - removed long winded pyopengl errorchecker messages)

2015-10-08 15:27:51,529 do_paint_rgb24 error
Traceback (most recent call last):
  File "xpra\client\window_backing_base.pyc", line 277, in do_paint_rgb24
  File "xpra\client\gl\gl_window_backing_base.pyc", line 622, in _do_paint_rgb24
  File "xpra\client\gl\gl_window_backing_base.pyc", line 690, in _do_paint_rgb
  File "latebind.pyx", line 44, in OpenGL_accelerate.latebind.Curry.__call__ (c:
\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\src\latebind.c:1201)
  File "C:\Program Files (x86)\Xpra\OpenGL\GL\exceptional.py", line 46, in glEnd
  File "errorchecker.pyx", line 50, in OpenGL_accelerate.errorchecker._ErrorChec
ker.glCheckError (c:\Users\mcfletch\OpenGL-dev\OpenGL-ctypes\OpenGL_accelerate\s
rc\errorchecker.c:1121)
WindowsError: exception: access violation writing 0x08465000

Fri, 09 Oct 2015 09:57:28 GMT - Antoine Martin:

Ah, but of course: iconifying the window is not enough, we still have a widget that references the OpenGL context and we still paint to it even, albeit at a slower rate (so that the window manager can show previews in the task bar and show the window contents as soon as we we deiconify it)

So r10778 + r10780 introduces a "freeze" call on the window class which we use to free the OpenGL context by removing the widget then re-creating one next time we need it again. This is all a bit too involved to backport to v0.15.x.

To make it easier to test this code, especially on other platforms where locking does not cause the windows to be frozen, you can still trigger it with:

--key-shortcut=Meta+Shift+F7:freeze

r10779 should make it very rare (though maybe not impossible? but no big deal) to get paint errors reported as we finish to decompress a picture after we've destroyed the window's opengl backing context: those should now get logged at debug level only.

Things I would like to do more properly (which I will need to put in a new ticket):

@maxmylyn: does this work for you?


Fri, 09 Oct 2015 21:06:55 GMT - J. Max Mena: owner changed

Updated to r10768:

Attempted several times


-d win32 output(snipped to after SESSION_LOCK event):

(connected, locked screen, waited, then unlocked)

2015-10-09 13:36:02,359 WM_WTSSESSION_CHANGE: SESSION_LOCK on session 0x1
2015-10-09 13:36:02,359 will freeze all the windows
2015-10-09 13:36:02,375 on_getminmaxinfo(2032986, 36, 0, 1631208) max_size=None
2015-10-09 13:36:02,375 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x072957B
0>>]
2015-10-09 13:36:02,375 WM_ACTIVATEAPP: 1/0 client=gtk2.client
2015-10-09 13:36:02,375 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x1f055a
2015-10-09 13:36:02,375 fixup_window_style() unchanged style 0x16cf0000 on windo
w 0x2804ec
2015-10-09 13:36:02,375 fixup_window_style() unchanged style 0x16cf0000 on windo
w 0x3204f4
2015-10-09 13:36:02,375 fixup_window_style() unchanged style 0x16cf0000 on windo
w 0x2204ea
2015-10-09 13:36:02,391 on_getminmaxinfo(2622700, 36, 0, 1631208) max_size=None
2015-10-09 13:36:02,391 on_getminmaxinfo(3278068, 36, 0, 1631208) max_size=None
2015-10-09 13:36:02,407 on_getminmaxinfo(2229482, 36, 0, 1631208) max_size=None
2015-10-09 13:36:02,407 after_window_state_updated()
2015-10-09 13:36:02,407 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x1f055a
2015-10-09 13:36:02,407 after_window_state_updated()
2015-10-09 13:36:02,407 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2804ec
2015-10-09 13:36:02,407 after_window_state_updated()
2015-10-09 13:36:02,407 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x3204f4
Traceback (most recent call last):
  File "xpra\client\gtk_base\gtk_client_window_base.pyc", line 340, in window_st
ate_updated
  File "xpra\client\gtk_base\gtk_client_window_base.pyc", line 360, in update_wi
ndow_state
AssertionError
2015-10-09 13:36:02,407 after_window_state_updated()
2015-10-09 13:36:02,407 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2204ea
2015-10-09 13:36:03,700 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3
)
2015-10-09 13:37:11,611 callbacks for event WM_DEVICECHANGE: None
2015-10-09 13:37:11,611 WM_DEVICECHANGE: 7 / 0
2015-10-09 13:37:21,729 callbacks for event WM_DEVICECHANGE: None
2015-10-09 13:37:21,729 WM_DEVICECHANGE: 7 / 0
2015-10-09 13:37:24,812 callbacks for event WM_WTSSESSION_CHANGE: [<bound method
 ClientExtras.session_change_event of <xpra.platform.win32.gui.ClientExtras obje
ct at 0x072957B0>>]
2015-10-09 13:37:24,812 WM_WTSSESSION_CHANGE: SESSION_UNLOCK on session 0x1
2015-10-09 13:37:26,344 callbacks for event WM_NULL: None
2015-10-09 13:37:26,344 unknown reserved system message: WM_NULL / 0 / 0
2015-10-09 13:37:32,109 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x072957B
0>>]
2015-10-09 13:37:32,109 WM_ACTIVATEAPP: 0/4476 client=gtk2.client
2015-10-09 13:37:32,109 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x1f055a
2015-10-09 13:37:32,109 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2804ec
2015-10-09 13:37:32,109 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x3204f4
2015-10-09 13:37:32,125 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2204ea
2015-10-09 13:37:36,907 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:36,907 move_cb(2229560, 1044, 0, 512) x=2300, y=1403, size=16
2015-10-09 13:37:39,252 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,252 move_cb(2229560, 1044, 0, 512) x=2320, y=1421, size=16
2015-10-09 13:37:39,252 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,252 move_cb(2229560, 1044, 0, 512) x=2320, y=1421, size=16
2015-10-09 13:37:39,266 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,266 move_cb(2229560, 1044, 0, 512) x=2318, y=1421, size=16
2015-10-09 13:37:39,361 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,361 move_cb(2229560, 1044, 0, 512) x=2318, y=1421, size=16
2015-10-09 13:37:39,438 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,438 move_cb(2229560, 1044, 0, 512) x=2316, y=1423, size=16
2015-10-09 13:37:39,516 OnTaskbarNotify(2229560,1044,0,516) button(s) lookup: [(
3, 1)], callback=<function xpra_tray_click at 0x0712A970>
2015-10-09 13:37:39,627 OnTaskbarNotify(2229560,1044,0,517) button(s) lookup: [(
3, 0)], callback=<function xpra_tray_click at 0x0712A970>
2015-10-09 13:37:39,641 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,641 move_cb(2229560, 1044, 0, 512) x=2316, y=1423, size=16
2015-10-09 13:37:39,641 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,641 move_cb(2229560, 1044, 0, 512) x=2316, y=1423, size=16
2015-10-09 13:37:39,641 OnTaskbarNotify(2229560,1044,0,512) button(s) lookup: [(
2229560, 1044, 0, 512)], callback=<bound method Win32Tray.move_cb of <xpra.platf
orm.win32.win32_tray.Win32Tray object at 0x07287630>>
2015-10-09 13:37:39,641 move_cb(2229560, 1044, 0, 512) x=2316, y=1423, size=16
2015-10-09 13:37:40,345 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x072957B
0>>]
2015-10-09 13:37:40,345 WM_ACTIVATEAPP: 1/2540 client=gtk2.client
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x1f055a
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2804ec
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x3204f4
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2204ea
2015-10-09 13:37:40,345 callbacks for event WM_ACTIVATEAPP: [<bound method Clien
tExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x072957B
0>>]
2015-10-09 13:37:40,345 WM_ACTIVATEAPP: 0/2540 client=gtk2.client
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x1f055a
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2804ec
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x3204f4
2015-10-09 13:37:40,345 fixup_window_style() unchanged style 0x36cf0000 on windo
w 0x2204ea
2015-10-09 13:37:40,345 Win32Tray.cleanup() tray_widget=<xpra.platform.win32.win
32_NotifyIcon.win32NotifyIcon object at 0x07287650>
2015-10-09 13:37:40,345 win32NotifyIcon.close()
2015-10-09 13:37:40,345 OnDestroy(2229560,None,None,None) exit_callback=None
2015-10-09 13:37:40,345 OnDestroy(..) calling Shell_NotifyIcon(NIM_DELETE, (2229
560, 0))
2015-10-09 13:37:40,361 OnDestroy(..) calling exit_callback=None
2015-10-09 13:37:40,361 Win32Tray.cleanup() ended
2015-10-09 13:37:40,361 ClientExtras.cleanup()
2015-10-09 13:37:40,361 calling win32api.SetConsoleCtrlHandler(None, False)
2015-10-09 13:37:40,361 Win32EventListener.cleanup()
2015-10-09 13:37:40,361 stop_win32_session_events() old win32 proc=514150400
2015-10-09 13:37:40,361 ClientExtras.cleanup() ended
2015-10-09 13:37:40,361 remove_window_hooks(GLClientWindow(1 : None)) found <xpr
a.platform.win32.window_hooks.Win32Hooks object at 0x072D06B0>
2015-10-09 13:37:40,361 cleanup()
2015-10-09 13:37:40,361 remove_window_hooks(GLClientWindow(2 : None)) found <xpr
a.platform.win32.window_hooks.Win32Hooks object at 0x072D0810>
2015-10-09 13:37:40,361 cleanup()
2015-10-09 13:37:40,377 remove_window_hooks(GLClientWindow(21 : None)) found <xp
ra.platform.win32.window_hooks.Win32Hooks object at 0x072D0B10>
2015-10-09 13:37:40,377 cleanup()
2015-10-09 13:37:40,377 remove_window_hooks(GLClientWindow(14 : None)) found <xp
ra.platform.win32.window_hooks.Win32Hooks object at 0x072D08B0>
2015-10-09 13:37:40,377 cleanup()
2015-10-09 13:37:40,377 remove_window_hooks(GLClientWindow(17 : None)) found <xp
ra.platform.win32.window_hooks.Win32Hooks object at 0x072D09F0>
2015-10-09 13:37:40,377 cleanup()
2015-10-09 13:37:40,891 Win32Tray.cleanup() tray_widget=None
2015-10-09 13:37:40,891 Win32Tray.cleanup() ended
2015-10-09 13:37:40,891 ClientExtras.cleanup()
2015-10-09 13:37:40,891 Win32EventListener.cleanup()
2015-10-09 13:37:40,891 stop_win32_session_events() old win32 proc=None
2015-10-09 13:37:40,891 ClientExtras.cleanup() ended

Sat, 10 Oct 2015 05:32:02 GMT - Antoine Martin: status changed; resolution set

I have moved the unresolved issues to #997. (restore windows, block new windows)

Found one remaining issue AssertionError thanks to your client log output, it should be fixed by r10786. This could have caused this minimize code to fail for some windows in some cases! ..and the crash to re-appear.

Closing at last!

(I am not backporting these changes for now: just too many changes, too intrusive, let's focus on 0.16)


Sat, 23 Jan 2021 05:09:16 GMT - migration script:

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