From 6dc5ac2f208632d2430a7e82b539e4afa75770a6 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Wed, 5 Dec 2012 16:05:42 +0000 Subject: [PATCH] [0.2.x] fixed : Abnormal process termination after findSymbol git-svn-id: https://pykd.svn.codeplex.com/svn@81657 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dia/diacallback.h | 2 +- pykd/dia/diaload.cpp | 20 ++++++-------------- pykd/win/memory.cpp | 3 +++ 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/pykd/dia/diacallback.h b/pykd/dia/diacallback.h index 266291b..8c34ff9 100644 --- a/pykd/dia/diacallback.h +++ b/pykd/dia/diacallback.h @@ -11,7 +11,7 @@ class DiaLoadCallback2 : public IDiaLoadCallback2 { std::string *m_openedSymbolFile; public: DiaLoadCallback2(std::string *openedSymbolFile = NULL) - : m_nRefCount(1), m_openedSymbolFile(openedSymbolFile) + : m_nRefCount(0), m_openedSymbolFile(openedSymbolFile) { } diff --git a/pykd/dia/diaload.cpp b/pykd/dia/diaload.cpp index 327aab6..1200e94 100644 --- a/pykd/dia/diaload.cpp +++ b/pykd/dia/diaload.cpp @@ -124,25 +124,17 @@ public: /* [in] */ DWORD cbData, /* [out] */ DWORD *pcbData, /* [size_is][out] */ BYTE *pbData - ) override { - - try - { - readMemory( + ) override + { + if ( readMemoryUnsafe( m_loadBase + relativeVirtualAddress, pbData, cbData, FALSE, - pcbData); + pcbData) ) + return S_OK; - return S_OK; - } - catch( const MemoryException &except ) - { - DBG_UNREFERENCED_LOCAL_VARIABLE(except); - } - - return S_FALSE; + return E_FAIL; //S_FALSE; } }; diff --git a/pykd/win/memory.cpp b/pykd/win/memory.cpp index e91b277..b123dc4 100644 --- a/pykd/win/memory.cpp +++ b/pykd/win/memory.cpp @@ -68,6 +68,9 @@ void readMemory( ULONG64 offset, PVOID buffer, ULONG length, bool phyAddr, ULONG { PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate ); + if ( readed ) + *readed = 0; + HRESULT hres; if ( phyAddr == false ) {