On 11/24/06, Gregory Shimansky <[EMAIL PROTECTED]> wrote:
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.
Agree! It seems like a mess for me as well. The most clean approach is
to return EXCEPTION_CONTINUE_SEARCH for any exception happened in a
native code. I would suggest to fix the problem in this way instead of
HARMONY-2285. Currently, the launcher installs its own exception
handler which blocks default exception handler. So if we wish to have
a debug dialog we need to disable launcher's handler somehow. Should
we discuss it in a new thread?
Thanks
Evgueni
>
> [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