GPF in DoNotifyWindowAboutCaptureLost()
Neil Robinson
neil at simpol.com
Thu May 1 10:09:12 PDT 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Vaclav Slavik wrote:
| On Thu, 2008-05-01 at 16:07 +0100, Neil Robinson wrote:
|> At no point do we capture the mouse in any of the code that is
|> called up to the point where the crash occurs.
|
| Clearly, your app does capture the mouse somewhere, otherwise this
| crash couldn't happen. It may be in some library code, but it does
| happen, and it would be helpful to know _where_ is the window holding
| capture destroyed.
This is not as easy to establish as you seem to assume. Our code is not
calling any of the capture code. It is also running wx in a completely
separate thread (since wx requires that it be running things, which is
something that we can't allow since otherwise our own threads would halt).
|> As I pointed out when I posted, upon reading the code it is clear
|> that an invalid pointer is being used, what I don't quite follow,
|> is how the assert has not already been called,
|
| As I said: window A captures mouse, then window B captures mouse,
| then window A is destroyed (without removing itself from the stack).
That is clear, but this is my point, if the assert were working
correctly, then it would have fired when the window was destroyed if the
window were anywhere on the capture stack. What is the point of having a
stack if the window has to be the one that currently has capture at the
time that it is destroyed?
| Another possibility is ms_winCaptureCurrent and GetCapture() getting
| out of sync somehow. Either way, some capturing was involved.
Yes, but not by our code. There isn't that much going on at this point
in creating the window that then gets destroyed. Like I described, it is
a fairly minimal dialog that gets opened which then calls a common
dialog. I only ever see it when trying to call a common dialog (file open).
The call stack upon getting the GPF is three levels deep into wx code,
then system code, then wx code again, then system code again, then wx
code again when the GPF occurs.
- --
Ciao, Neil
========================================================================
Neil Robinson
Technical Director
Simpol Limited
St John's Innovation Centre
Cowley Road, Cambridge, CB4 0WS, UK
Simpol Limited is a limited company registered in England and Wales.
Registered number is: 04759852.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIGfk3ZVwyUf+Ag9wRAoVlAJ9P4A/DKDoXvqytFAakJRAl1ikMKwCfZpMw
mI1PxXR3wGF4630oOPWhSyI=
=zSVx
-----END PGP SIGNATURE-----
More information about the wx-users
mailing list