nvda
ed52f3a7 - Crash dumps are no longer empty on 64 bit (#18868)

Commit
183 days ago
Crash dumps are no longer empty on 64 bit (#18868) ### Summary of the issue: On 64 bit, if NVDA crashed, a 0 byte nvda_crash.dmp would be created with no actual crash dump information, as MiniDumpWriteDump fails. ### Description of user facing changes: A valid crash dump is now produced if NVDA crashes. ### Description of developer facing changes: None ### Description of development approach: Move creation of nvda_crash.dmp and filling it in with MiniDumpWriteDump into its own c++ utility function in nvdahelper.localLib, and call this from the UnhandledExceptionFilter in watchdog.py. ### Testing strategy: Crashed NVDA by running the following in the Python console: ``` import ctypes ctypes.windll.kernel32.DebugBreak() ``` Verified that an nvda_crash.dmp was created and that it could be opened in winDBG and exception information was viewable. Also confirmed that nvda.log still contained the listing of all Python stacks. ### Known issues with pull request: Although we already added what seemed to be correct definitions for MiniDumpWriteDump and related structures to winBindings.dbghelp, MiniDumpWriteDump still failed on 64 bit from Python with a memory access error. Moving this code to c++ solves the issue, but It is not quite understood exactly why. Perhaps the native handle for the file from msvcrt.get_osfhandle is not correctly 64 bit?
Parents
Loading