Tim Ellison wrote:
Oliver Deakin wrote:
Hi all,
I was checking out some JIRAs and spotted that when we
print exception stack traces at the moment we're not getting
the full NLS message. For example, running the following:
public class Test {
public static void main(String[] args) throws Throwable {
throw new NullPointerException();
}
}
prints:
K0319java.lang.NullPointerException
at Test.main(Test.java:3)
FAILED to invoke JVM.
I can spot 2 things wrong with this output (pats on the back
if you spot more!):
1) K0319 should actually say something like
'Exception in thread "main" '. It looks like out NLS messages
arn't being printed correctly - anyone got any ideas about this
one?
The message was missing in the catalog. I added it in r472226.
Great, thanks! I now get:
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:3)
FAILED to invoke JVM.
Never thought Id be happy to see a NullPointerException message...
Regards,
Oliver
2) The bogus "FAILED to invoke JVM" message.
Looks like this is coming from the launcher (Im running
Harmony + IBM VME).
It appears that this happens because in main_runJavaMain
(in the launcher main.c) after we make the CallStaticVoidMethod()
call to run main, we do the following:
if ((*env)->ExceptionCheck (env))
{
if (rc == 0)
rc = 100;
}
which causes a return code of 100 to be passed back to
gpProtectedMain() via the invocation() function, where it is used
in the following way:
if (invocation(...))
{
hytty_printf (PORTLIB, "FAILED to invoke JVM.\n");
goto bail;
}
I imagine this misleading message also appears with DRLVM?
I'm not setup at the moment to test it.
Is there a reason we set the return code to 100 if there's an
unhandled exception?
I'll leave that one for the person who changed the code ;-)
Regards,
Tim
--
Oliver Deakin
IBM United Kingdom Limited