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 )
     {