Correction below

Gregory Shimansky wrote:
On Wednesday 22 November 2006 03:02 Alexei Fedotov wrote:
Tatiana,
That's great! Feel free to file JIRA issues about new problems.

This is quite interesting that you haven't discovered
org.apache.harmony.logging.tests.java.util.logging.SocketHandlerTest
failure using effectively the same revision as I.  This makes me think
that my problems can be local to my computer.

The problem with this test appeared to be a regression after HARMONY-2006. DRLVM started to halt of all unknown exceptions passing to VEH handler when -Dvm.assert_dialog=true. This is quite wrong thing to do because VEH handler is called in case of C++ exceptions too.

Also it appeared that windows kernel uses exceptions inside of itself, so VEH handler is called for some API functions which return an error, like in case of SocketHandlerTest. Previous to HARMONY-2006 [1] VM didn't react to any unknown codes, just returned EXCEPTION_CONTINUE_EXECUTION from the handler.

It should have been "EXCEPTION_CONTINUE_SEARCH" in this text, I pasted a wrong one from the code. This code was used to find a suitable handler (or show the error window) for the received exception.

Now it started to call DebugBreak in case when UnhandledExceptionFilter(nt_exception) == EXCEPTION_CONTINUE_SEARCH.

Ivan offered a quick fix in HARMONY-2285, which calls this function only if IS_ERROR [2] macro returns true for the exception code. The fix helped, and now in interactive test runs when -Dvm.assert_dialog=true (default) tests pass just as well as in non-interactive mode.

I am still a bit unsure, why mess around with unknown exception codes, maybe it is better to return EXCEPTION_CONTINUE_SEARCH always, and the debugging dialog will be open by the default NT handler.

[1] http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/win/ia32/nt_exception_filter.cpp?p2=%2Fincubator%2Fharmony%2Fenhanced%2Fdrlvm%2Ftrunk%2Fvm%2Fvmcore%2Fsrc%2Futil%2Fwin%2Fia32%2Fnt_exception_filter.cpp&p1=%2Fincubator%2Fharmony%2Fenhanced%2Fdrlvm%2Ftrunk%2Fvm%2Fvmcore%2Fsrc%2Futil%2Fwin%2Fia32%2Fnt_exception_filter.cpp&r1=476183&r2=476182&view=diff&pathrev=476183

[2] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/74497f4b-1c88-4c8a-b9e7-606e77364f48.asp



--
Gregory

Reply via email to