On Thu, 1 Sep 2022 19:09:25 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

> com/sun/jdi tests report errors by calling TestScaffold.failure(msg), which 
> prints the failure message and sets the testFailed flag. At some later point 
> the failure is detected and an exception is thrown. The end result is the 
> exception has just has a vanilla message that says something like "TestXXX 
> failed", and the backtrace is not indicative of where the failure occurred. 
> If you have tools that search logs looking for exceptions to determine the 
> reason for the failure, you likely won't find any. Here's an example: 
> 
> 
> [2ms] run args: [SuspendAfterDeathTarg]
> [514ms] FAILED: got Breakpoint event before ThreadDeath event.
> java.lang.Exception: SuspendAfterDeath: failed
> at SuspendAfterDeath.runTests(SuspendAfterDeath.java:110)
> at TestScaffold.startTests(TestScaffold.java:432)
> at SuspendAfterDeath.main(SuspendAfterDeath.java:47)
> at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
> at java.base/java.lang.reflect.Method.invoke(Method.java:578)
> at 
> com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
> at java.base/java.lang.Thread.run(Thread.java:1589)
> 
> 
> So the reason for the failure is clear (the "FAILED" message), but its stack 
> trace is missing and the reason is not included in the exception message that 
> is printed much later on. This PR adds printing of the stack trace at the 
> time of the failure.
> 
> 
> [2ms] run args: [SuspendAfterDeathTarg]
> [514ms] FAILED: got Breakpoint event before ThreadDeath event.
>         at TestScaffold.failure(TestScaffold.java:455)
>         at SuspendAfterDeath.breakpointReached(SuspendAfterDeath.java:64)
>         at TestScaffold$EventHandler.notifyEvent(TestScaffold.java:194)
>         at TestScaffold$EventHandler.run(TestScaffold.java:278)
>         at java.base/java.lang.Thread.run(Thread.java:1589) 
> java.lang.Exception: SuspendAfterDeath: failed
> at SuspendAfterDeath.runTests(SuspendAfterDeath.java:110)
> at TestScaffold.startTests(TestScaffold.java:432)
> at SuspendAfterDeath.main(SuspendAfterDeath.java:47)
> at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
> at java.base/java.lang.reflect.Method.invoke(Method.java:578)
> at 
> com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
> at java.base/java.lang.Thread.run(Thread.java:1589)

This pull request has now been integrated.

Changeset: da99e3e8
Author:    Chris Plummer <cjplum...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/da99e3e8299f3a476603aa43a99164c2c01adff4
Stats:     4 lines in 1 file changed: 4 ins; 0 del; 0 mod

8289400: Improve com/sun/jdi/TestScaffold error reporting

Reviewed-by: amenkov, lmesnik

-------------

PR: https://git.openjdk.org/jdk/pull/10127

Reply via email to