XP crash fixed, or worked around at least

Hi all,

If you have had the problem with wxPython 3.0.0 crashing on XP, please try the new 3.0.1 preview build that was just uploaded to http://wxPython.kosoftworks.com/preview/20140104. It turns out this bug is due to a Microsoft bug when using TLS access compiler optimizations in DLLs that are loaded dynamically with LoadLibrary(), like how Python loads extension modules. The bug has been known in wx for quite some time, but apparently some unknown or slightly random set of circumstances can prevent it from manifesting, which is why we didn't see it happening until 3.0.0.

Although it is technically a preview build, it is only because of timing. The version number in wx has already been updated to 3.0.1 but there hasn't been an official release yet. However, there have been only bug fixes checked in to the 3.0 branch so I would say that you can feel just as comfortable using this preview build as you do using the 3.0.0 release.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org

Thanks Robin!. SourceCoder and other apps is running fine now(well, normally) on Windows XP.

Will give it a better run though later. Dealing with Blizzard ATM.

One small patch that didn’t make it.
AttributeError: ‘module’ object has no attribute ‘EVT_STC_HOTSPOT_RELEASE_CLICK’
in the etg generation.

@Users: This can be fixed manually in the meantime by adding this line to the end of wx/stc.py
EVT_STC_HOTSPOT_RELEASE_CLICK = wx.PyEventBinder( wxEVT_STC_HOTSPOT_RELEASE_CLICK, 1 )

The 3.0.1 preview also solves all my windows vista issues with py2exe'd wxpython, thank you.

I presume XP platforms should deinstall the 3.0.0 on XP. Any specific method to do so?
For those of you developing on non-XP be aware that if your app ends up there don’t forget this gotcha.

Yes, That’s recommended. The installers offers this option. So hopefully any registry entries are cleaned up properly.
It may not be required for it to run as the only real difference should only be the wx/foo.pyd and compiled stuff really and it would get overwritten.

But yes. Properly uninstalling it however your method of install was is probably a very good idea this time around as it uses the same named dir in site-packages.

···

On Sunday, January 5, 2014 4:30:01 PM UTC-6, DevPlayer wrote:

I presume XP platforms should deinstall the 3.0.0 on XP. Any specific method to do so?
For those of you developing on non-XP be aware that if your app ends up there don’t forget this gotcha.

I finally tracked down why right-clicking my app’s TextCtrl was spewing errors! (Apparently it is because of a library bug, not my code!!! Yay I guess)

I narrowed the problem down (for my case) to using wx.TE_RICH in a TextCtrl.

I’ve attached a simple demo that works for me to cause the crash or alleviate it.

Also pasting here:

import wxversion

wxversion.select(‘3.0’)

import wx

class testFrame(wx.Frame):

def __init__(self):

    wx.Frame.__init__(self, parent=None, title="test", size=(200, 200))

    consolePanel = wx.Panel(self)

    consoleHSizer = wx.BoxSizer(wx.HORIZONTAL)

    

    #swapping the comment between the two following lines alleviates or causes the crash

    consoleHSizer.AddF(wx.TextCtrl(consolePanel, -1, "some text", style=wx.TE_RICH), wx.SizerFlags(1).Expand())        

    #consoleHSizer.AddF(wx.TextCtrl(consolePanel, -1, "some text"), wx.SizerFlags(1).Expand())        

    

    

    consolePanel.SetSizer(consoleHSizer)

if name == “main”:

app = wx.App(False)

frame = testFrame()

frame.Show()

app.MainLoop()

demoWx30Crashing.py (775 Bytes)

Oh, BTW, why are the broken 3.0 binaries being pushed by the download page here?:
http://wxpython.org/download.php#msw

···

On Thursday, July 17, 2014 4:12:41 PM UTC-7, Nathan McCorkle wrote:

I finally tracked down why right-clicking my app’s TextCtrl was spewing errors! (Apparently it is because of a library bug, not my code!!! Yay I guess)

I narrowed the problem down (for my case) to using wx.TE_RICH in a TextCtrl.

I’ve attached a simple demo that works for me to cause the crash or alleviate it.

Also pasting here:

import wxversion

wxversion.select(‘3.0’)

import wx

class testFrame(wx.Frame):

def __init__(self):
    wx.Frame.__init__(self, parent=None, title="test", size=(200, 200))
    consolePanel = wx.Panel(self)
    consoleHSizer = wx.BoxSizer(wx.HORIZONTAL)
    #swapping the comment between the two following lines alleviates or causes the crash
    consoleHSizer.AddF(wx.TextCtrl(consolePanel, -1, "some text", style=wx.TE_RICH), wx.SizerFlags(1).Expand())        
    #consoleHSizer.AddF(wx.TextCtrl(consolePanel, -1, "some text"), wx.SizerFlags(1).Expand())        
    consolePanel.SetSizer(consoleHSizer)

if name == “main”:

app = wx.App(False)
frame = testFrame()
frame.Show()
app.MainLoop()

Hi Nathan,

I don't see a crash on right clicking with Py3.4 and Phoenix, only see one on closing when I use your second line:

File "D:\devOther\aaSamples\NathanMcCorkle\demoWx30Crashing.py", line 20, in <module>
   app.MainLoop()
File "c:\Python34\Lib\site-packages\wx\core.py", line 1879, in MainLoop
   rv = wx.PyApp.MainLoop(self)

wx._core.wxAssertionError: C++ assertion "m_menuDepth > 0" failed at ..\..\src\msw\toplevel.cpp(1544) in wxTopLevelWindowMSW::DoSendMenuOpenCloseEvent(): No open menus?

Can you check if it is still happening with the 3.0.1. preview Robin did a little while ago, and if yes maybe create a ticket.

Werner

Robin just did a preview for 3.0.1 a little while ago, I guess as soon as he finds time and if nothing serious is found with the preview he will issue 3.0.1 and then update the above.

Werner

···

On 7/18/2014 1:13, Nathan McCorkle wrote:

Oh, BTW, why are the broken 3.0 binaries being pushed by the download page here?:
Redirecting...

Rich text crashing a TextCtrl seem serious enough to pull those files down.

···

On Friday, July 18, 2014 2:08:19 AM UTC-7, werner wrote:

On 7/18/2014 1:13, Nathan McCorkle wrote:

Oh, BTW, why are the broken 3.0 binaries being pushed by the download
page here?:

http://wxpython.org/download.php#msw

Robin just did a preview for 3.0.1 a little while ago, I guess as soon
as he finds time and if nothing serious is found with the preview he
will issue 3.0.1 and then update the above.

Werner

I’m trying, but I can’t seem to figure out how to use wxversion.select for the 3.0.1 files… i’ve cd’ed (change directory) to the wx-3.0-msw directory (and also tried to change to wx-3.0-msw\wx)… then tried both wxversion.select(‘3.0.1’) and also wxversion.select(‘3.0.1.0.b20140707’) (found in the version.py file)

The first method ‘3.0.1’ just loads the existing 3.0 files I had in site-packages… while ‘3.0.1.0.b20140707’ causes wxversion to crash:

File “”, line 1, in

File “c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py”, line 149, in select

bestMatch = _get_best_match(installed, versions, optionsRequired)

File “c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py”, line 273, in _get_best_match

score = pkg.Score(_wxPackageInfo(ver), optionsRequired)

File “c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py”, line 357, in init

self.version = tuple([int(x) for x in segments[0].split('.')])

ValueError: invalid literal for int() with base 10: ‘b20140707’

···

On Friday, July 18, 2014 2:06:38 AM UTC-7, werner wrote:

Hi Nathan,

I don’t see a crash on right clicking with Py3.4 and Phoenix, only see
one on closing when I use your second line:

File “D:\devOther\aaSamples\NathanMcCorkle\demoWx30Crashing.py”, line
20, in

app.MainLoop()

File “c:\Python34\Lib\site-packages\wx\core.py”, line 1879, in MainLoop

rv = wx.PyApp.MainLoop(self)

wx._core.wxAssertionError: C++ assertion “m_menuDepth > 0” failed at
…..\src\msw\toplevel.cpp(1544) in
wxTopLevelWindowMSW::DoSendMenuOpenCloseEvent(): No open menus?

Can you check if it is still happening with the 3.0.1. preview Robin did
a little while ago, and if yes maybe create a ticket.

Werner

I'm trying, but I can't seem to figure out how to use wxversion.select for
the 3.0.1 files...

IIRC, wx.version.select() only works on the 1st and second version number,
not the third.

I think the idea is that there should only be bug fixes, rather than API
changes, in the third digit releases -- so you would just go aead and
install only the latest point release.

I think we now have wheels, that should respect virtualenv, so you can
experiment with multiple versions that way. (though maybe not on linux....)

-CHB

···

On Fri, Jul 18, 2014 at 11:26 AM, Nathan McCorkle <nmz787@gmail.com> wrote:

i've cd'ed (change directory) to the wx-3.0-msw directory (and also tried
to change to wx-3.0-msw\wx)... then tried both wxversion.select('3.0.1')
and also wxversion.select('3.0.1.0.b20140707') (found in the __version__.py
file)

The first method '3.0.1' just loads the existing 3.0 files I had in
site-packages... while '3.0.1.0.b20140707' causes wxversion to crash:

  File "<stdin>", line 1, in <module>
  File
"c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py",
line 149, in select
    bestMatch = _get_best_match(installed, versions, optionsRequired)
  File
"c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py",
line 273, in _get_best_match
    score = pkg.Score(_wxPackageInfo(ver), optionsRequired)
  File
"c:\Users\nmccorkx\Portable_Python_2.7.5.1_gtk\App\lib\site-packages\wxversion.py",
line 357, in __init__
    self.version = tuple([int(x) for x in segments[0].split('.')])
ValueError: invalid literal for int() with base 10: 'b20140707'

On Friday, July 18, 2014 2:06:38 AM UTC-7, werner wrote:

Hi Nathan,

I don't see a crash on right clicking with Py3.4 and Phoenix, only see
one on closing when I use your second line:

File "D:\devOther\aaSamples\NathanMcCorkle\demoWx30Crashing.py", line
20, in <module>
   app.MainLoop()
File "c:\Python34\Lib\site-packages\wx\core.py", line 1879, in MainLoop
   rv = wx.PyApp.MainLoop(self)

wx._core.wxAssertionError: C++ assertion "m_menuDepth > 0" failed at
..\..\src\msw\toplevel.cpp(1544) in
wxTopLevelWindowMSW::DoSendMenuOpenCloseEvent(): No open menus?

Can you check if it is still happening with the 3.0.1. preview Robin did
a little while ago, and if yes maybe create a ticket.

Werner

--
You received this message because you are subscribed to the Google Groups
"wxPython-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to wxPython-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception

Chris.Barker@noaa.gov

I just tried with Py2.7 and 3.0 (wxPython3.0-win32-3.0.0.0-py27.exe)
and I don’t see any crash doing right click on the control, tried
all the menu items on the context menu and I don’t see a crash on
closing.
Werner

···

Hi Nathan,

  On 7/18/2014 20:22, Nathan McCorkle wrote:
    Rich text crashing a TextCtrl seem serious enough

to pull those files down.

    On Friday, July 18, 2014 2:08:19 AM UTC-7, werner

wrote:

      On

7/18/2014 1:13, Nathan McCorkle wrote:

      > Oh, BTW, why are the broken 3.0 binaries being pushed by

the download

      > page here?:


      > [http://wxpython.org/download.php#msw](http://wxpython.org/download.php#msw)


      Robin just did a preview for 3.0.1 a little while ago, I guess

as soon

      as he finds time and if nothing serious is found with the

preview he

      will issue 3.0.1 and then update the above.




      Werner

  You received this message because you are subscribed to the Google

Groups “wxPython-dev” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to wxPython-dev+unsubscribe@googlegroups.com.

  For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

Hi Nathan,

I'm trying, but I can't seem to figure out how to use wxversion.select for the 3.0.1 files... i've cd'ed (change directory) to the wx-3.0-msw directory (and also tried to change to wx-3.0-msw\wx)... then tried both wxversion.select('3.0.1') and also wxversion.select('3.0.1.0.b20140707') (found in the __version__.py file)

If your folders are named:
wx-3.0.1-msw-phoenix
wx-3.0.1-msw-classic

Then the following works for me:

wxversion.select('3.0.1-msw-classic', True)

or

wxversion.select('3.0.1-msw-phoenix', True)

Werner

···

On 7/18/2014 20:26, Nathan McCorkle wrote:

AFAIK you have to be on WinXP (maybe 32-bit only, I’m not sure)

Also, it was crashing on right-click, not on closing.

···

On Saturday, July 19, 2014 12:11:07 AM UTC-7, werner wrote:

Hi Nathan,

  On 7/18/2014 20:22, Nathan McCorkle wrote:
    Rich text crashing a TextCtrl seem serious enough

to pull those files down.

I just tried with Py2.7 and 3.0 (wxPython3.0-win32-3.0.0.0- py27.exe)
and I don’t see any crash doing right click on the control, tried
all the menu items on the context menu and I don’t see a crash on
closing.

so I changed the directory wx-3.0.0-msw to wx-3.0.1-msw-classic but using that with the True flag in wxversion.select spits out these errors:

Traceback (most recent call last):

File “t3.py”, line 2, in

wxversion.select('wx-3.0.1-msw-classic', True)

File “C:\BlueLine_demoDay\ThirdParty\Portable Python 2.7.5.1\App\lib\site-packages\wxversion.py”, line 149, in select

bestMatch = _get_best_match(installed, versions, optionsRequired)

File “C:\BlueLine_demoDay\ThirdParty\Portable Python 2.7.5.1\App\lib\site-packages\wxversion.py”, line 273, in _get_best_match

score = pkg.Score(_wxPackageInfo(ver), optionsRequired)

File “C:\BlueLine_demoDay\ThirdParty\Portable Python 2.7.5.1\App\lib\site-packages\wxversion.py”, line 357, in init

self.version = tuple([int(x) for x in segments[0].split('.')])

ValueError: invalid literal for int() with base 10: ‘wx’

I checked my wxversion.py against the one in the 3.0.1 download and they differ only in using SimpleApp vs App… so I don’t think that would cause this (what seems to be) parsing error.

···

On Saturday, July 19, 2014 12:18:51 AM UTC-7, werner wrote:

Hi Nathan,

On 7/18/2014 20:26, Nathan McCorkle wrote:

I’m trying, but I can’t seem to figure out how to use wxversion.select
for the 3.0.1 files… i’ve cd’ed (change directory) to the wx-3.0-msw
directory (and also tried to change to wx-3.0-msw\wx)… then tried
both wxversion.select(‘3.0.1’) and also
wxversion.select(‘3.0.1.0.b20140707’) (found in the version.py file)

If your folders are named:

wx-3.0.1-msw-phoenix

wx-3.0.1-msw-classic

Then the following works for me:

wxversion.select(‘3.0.1-msw-classic’, True)

or

wxversion.select(‘3.0.1-msw-phoenix’, True)