Closed jcsteh closed 8 years ago
Double checked wxWidgets
version required is 3.0.2.0
(by looking at the file properties in miscDeps\python\wx\wxmsw30u_stc_vc90.dll
wxWidgets downloads:
https://github.com/wxWidgets/wxWidgets/releases/tag/v3.0.2
Downloaded: wxMSW-3.0.2_vc90_ReleaseDLL.7z
Compared the checksums with the dlls in our wxPython libs directory. They do not match. Dropped in the dlls from the wxWidgest release and got the following error:
INFO - __main__ (07:09:38):
Starting NVDA
CRITICAL - __main__ (07:09:38):
core failure
Traceback (most recent call last):
File "nvda.pyw", line 189, in <module>
import core
File "core.py", line 23, in <module>
import nvwave
File "nvwave.py", line 14, in <module>
import wx
File "C:\work\nvda\miscDeps\python\wx\__init__.py", line 45, in <module>
from wx._core import *
File "C:\work\nvda\miscDeps\python\wx\_core.py", line 16924, in <module>
from _gdi import *
File "C:\work\nvda\miscDeps\python\wx\_gdi.py", line 4, in <module>
import _gdi_
ImportError: DLL load failed: The specified procedure could not be found.
It looks like we would have to build wxWidgets included with wxPython to get the appropriate dlls / pdbs.
However I tried downloading the 32-bit binaries for MSVC 9
from https://wxpython.org/download.php This is an installer, which includes pre-built version of wxWidgets and pdb's. The checksums for all these files matches the files we currently have in NVDA. When dropped into nvda there does not seem to be a problem.
Oh! I didn't realise those downloads included pdbs. Very nice. I think that means all we need do is grab the symbols and upload them to our symbol server; no changes to NVDA necessary. That also means we can analyse existing crash dumps rather than waiting for those crashes to be captured again, which is even better.
Accept for pdbs for the pyds. I.e. this is just WX symbols, not wxPython symbols. To be completely covered we'd still want to build wxPython with symbols if possible. But I think 99% of what we need already is covered by the existing wx symbols as the pyds are only wrapper functions generated by swig.
On 5/07/2016 7:59 PM, James Teh wrote:
Oh! I didn't realise those downloads included pdbs. Very nice. I think that means all we need do is grab the symbols and upload them to our symbol server; no changes to NVDA necessary. That also means we can analyse existing crash dumps rather than waiting for those crashes to be captured again, which is even better.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6143#issuecomment-230437258, or mute the thread https://github.com/notifications/unsubscribe/ANf5nYPTuGl7y1ymDZz5mCUQwcQsMNdBks5qSisOgaJpZM4JEzIy.
Michael Curran Executive Director, NV Access Limited Phone: +61 7 3149 3306 Website: http://www.nvaccess.org/ Twitter: @NVAccess Facebook: http://www.facebook.com/NVAccess
It's probably worth analysing one of the current crash dumps where we crash in wx with these symbols present. If that works, I'd lean towards not building wxPython ourselves, as it's more maintenance work for us going forward.
These symbols do work. Using them on one crash dump allows kp and friends to list more than 5 frames. It also moves the "stack information not available. Following frames may be wrong" message down to above the most inner call to a wxPython pyd function. (it used to be above the most inner wx dll function). However, from that point onwards, things are all over the place. A lot of 0x0s and it gives up after stack 21.
So annoyingly as this is, for perfect results the wxPython pdbs will still help.
But, in most cases, hopefully the inner most frames will show the issue.
Most of these though are the deactivateActCtx bug.
Mick
On 5/07/2016 8:22 PM, James Teh wrote:
It's probably worth analysing one of the current crash dumps where we crash in wx with these symbols present. If that works, I'd lean towards not building wxPython ourselves, as it's more maintenance work for us going forward.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6143#issuecomment-230441838, or mute the thread https://github.com/notifications/unsubscribe/ANf5nbwya4ObajL0QJ4010GJg45okShHks5qSjBggaJpZM4JEzIy.
Michael Curran Executive Director, NV Access Limited Phone: +61 7 3149 3306 Website: http://www.nvaccess.org/ Twitter: @NVAccess Facebook: http://www.facebook.com/NVAccess
In short, we would still like to proceed with investigating whether it is possible to generate symbols for wxPython pyd files, as this will ensure we have all symbols allowing for a full and accurate stack when viewing NVDA in a debugger.
Building wxPython on Windows 10 Instructions:
Microsoft Visual C++ Compiler for Python 2.7
and Install
Visual C++ 2008 32-bit Command Prompt
that is added to your system for all compilation steps.net Framework 3.5
C:\wxBuild
git@github.com:wxWidgets/wxPython.git
into your wxBuild directory
git checkout wxPy-3.0.2.0
C:\wxBuild\wxPython
wxWidgets3.0-devel-win32-3.0.2.0.exe
32-bit binaries for MSVC 9
link on https://wxpython.org/download.php
C:\wxWidgets\3.0.2.0-win32
C:\wxWidgets\3.0.2.0-win32\*
to C:\wxBuild\wxWidgets
C:\wxBuild\wxWidgets\lib\vc90_dll
to C:\wxBuild\wxPython\lib\vc90_dll
C:\wxBuild\wxPython\wxPython\config.py
cflags += ['/Zi']
lflags = ['/DEBUG' ]
C:\BuildWx\wxPython\wxPython\build-wxpython.py
DESTDIR = options.installdir
PREFIX = options.prefix
C:\wxBuild\wxPython\wxPython
Start the build
C:\wxBuild\wxPython\wxPython
python build-wxpython.py --no_wxbuild --install > build.log
Check the results
C:\BuildWx\wxPython\wxPython\build\lib.win32-2.7\wx
C:\wxBuild\wxPython\wxPython\wx
and <your python install>\Lib\site-packages
but we want the one in ...build\lib.win32-2.7\wx
since this matches best with what is currently in nvdaC:\wxBuild\wxWidgets\lib\vc90_dll
)Finish up
C:\wxBuild\wxWidgets\lib\vc90_dll
) into the output.Errors?
error: Unable to find vcvarsall.bat
c:\work\bldwxpy3\wxPython\include\wx\platform.h(183) : fatal error C1083: Cannot open include file: 'wx/setup.h': No such file or directory
wxWidgets\lib\vc90_dll
to wxPython (see above)error: package directory 'wx\lib\agw' does not exist
bin/subrepos-make
from the right directory (see above)Fixed in 8f252398f4bf121009fd4b205c729629eab22352
Spun off #5998.
We're seeing quite a few crashes in wx code, but we can't get any info from them because wxPython doesn't include symbols. We want to use a build of wxPython for which we have symbols.
Possible approaches:
CC @feerrenrut, @MichaelDCurran.