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?

Evgueni


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
> > >
> > >
> >
>

Reply via email to