You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2006/11/07 20:30:06 UTC

svn commit: r472215 - in /incubator/harmony/enhanced/drlvm/trunk/vm/vmcore: include/version_svn_tag.h src/util/win/ia32/nt_exception_filter.cpp

Author: gshimansky
Date: Tue Nov  7 11:30:05 2006
New Revision: 472215

URL: http://svn.apache.org/viewvc?view=rev&rev=472215
Log:
Applied HARMONY-2010 [drlvm] Infinite recursion in vectored exception handler in debug VM in hardware exception with direction flag set

Tests passed on WinXP except for kernel test j.l.RuntimeTest2. This test doesn't seem to be failing because of this patch because it fails without it as well.


Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/version_svn_tag.h
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/version_svn_tag.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/version_svn_tag.h?view=diff&rev=472215&r1=472214&r2=472215
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/version_svn_tag.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/version_svn_tag.h Tue Nov  7 11:30:05 2006
@@ -18,6 +18,6 @@
 #ifndef _VERSION_SVN_TAG_
 #define _VERSION_SVN_TAG_
 
-#define VERSION_SVN_TAG  "472096"
+#define VERSION_SVN_TAG  "472165"
 
 #endif // _VERSION_SVN_TAG_

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp?view=diff&rev=472215&r1=472214&r2=472215
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp Tue Nov  7 11:30:05 2006
@@ -275,7 +275,25 @@
     }
 }
 
-LONG NTAPI vectored_exception_handler(LPEXCEPTION_POINTERS nt_exception)
+static LONG NTAPI vectored_exception_handler_internal(LPEXCEPTION_POINTERS nt_exception);
+
+LONG __declspec(naked) NTAPI vectored_exception_handler(LPEXCEPTION_POINTERS nt_exception)
+{
+    __asm {
+    push    ebp
+    mov     ebp,esp
+    pushfd
+    cld
+    mov     eax, [ebp + 8]
+    push    eax
+    call    vectored_exception_handler_internal
+    popfd
+    pop     ebp
+    ret     4    
+    }
+}
+
+static LONG NTAPI vectored_exception_handler_internal(LPEXCEPTION_POINTERS nt_exception)
 {
     DWORD code = nt_exception->ExceptionRecord->ExceptionCode;