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;