Tim,

I agree, we shouldn't kill entire process. Unfortunately, it is how
current implementation does. Actually, shutdown process is a weak
place of DRLVM and needs deep refactoring. I will try to figure out
what we can do as a short term solution.

Evgueni

On 10/30/06, Tim Ellison <[EMAIL PROTECTED]> wrote:
Evgueni Brevnov wrote:
> BTW, here is two more interesting cases
>
> 1) Throw uncaught exception in a new thread. Both RI and DRLVM give 0
> in that case.
> 2) Call System.exit(123) in a new thread. Both RI and DRLVM give 123.
>
> Currently, DRLVM calls system _exit() at the end of System.exit().
> That's why DestroyJavaVM never returns. So the changes I proposed for
> the launcher do not help until DRLVM forcibly terminates the process.
> :-(
>
> Does IBMVME uses system calls to stop the proccess? Does DestroyJavaVM
> returns?

You cannot kill the entire process when destroying the VM.  Apps that
embed the VM will have a nasty surprise.

Regards,
Tim

> On 10/30/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote:
>> It seems we need to fix the launcher... which is common part for both
>> DRLVM and IBVME. I see the problem in the following code sequence...
>>
>> <snip>
>>  (*jvm)->DetachCurrentThread(jvm);
>>  (*jvm)->DestroyJavaVM (jvm);
>> </snip>
>>
>> The current thread has an uncaught exception raised before it calls
>> DetachCurrentThread. This exception is printed out by default uncaught
>> exception handler which is called upon thread detaching. So after
>> DetachCurrentThread completes we have no exception anymore... Moreover
>> we can not play with DetachCurrentThread and DestroyJavaVM return code
>> since it should not depend on uncaught exceptions. So I think the fix
>> should look like the following:
>>
>> <snip>
>>   if (env->ExceptionOccured) {
>>        rc = 1;
>>   }
>>  (*jvm)->DetachCurrentThread(jvm);
>>  (*jvm)->DestroyJavaVM (jvm);
>>  return rc;
>> </snip>
>>
>> If there are no objections I'll come up with the patch soon...
>>
>> Thanks
>> Evgueni
>> On 10/30/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote:
>> > I'll try to see how to fix it for DRLVM
>> >
>> > Evgueni
>> >
>> > On 10/30/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote:
>> > > hmmm.... I got 0 for DRLVM on Win2003
>> > >
>> > > Evgueni
>> > >
>> > > On 10/30/06, Spark Shen <[EMAIL PROTECTED]> wrote:
>> > > > Then we may need to follow RI, since different error code fails
>> application
>> > > >
>> > > > Best regards
>> > > > Tony Wu ??:
>> > > > > Consider this class,
>> > > > > public class TestExeReturn {
>> > > > > public static void main(String[] args) throws Exception {
>> > > > > throw new Exception();
>> > > > > }
>> > > > > }
>> > > > >
>> > > > > when we run "java TestExeReturn" and "echo %errorlevel%", we
>> got 1 of
>> > > > > RI, -1 of DRLVM and 0 for IBMVM.
>> > > > >
>> > > > > a testcase of apache ant failed for this issue.
>> > > > >
>> > > >
>> > > >
>> > > > --
>> > > > Spark Shen
>> > > > China Software Development Lab, IBM
>> > > >
>> > > >
>> > >
>> >
>>
>

--

Tim Ellison ([EMAIL PROTECTED])


Reply via email to