Hi Daniel,
The test is fine.
Without the fix, jtreg is handling the uncaught LinkageError exception
and has called System.exit which will deadlock since it is already in
System.exit.
Roger
On 10/28/2016 10:44 AM, Daniel Fuchs wrote:
On 28/10/16 14:50, Roger Riggs wrote:
Hi Daniel,
Looks fine.
Roger
Thanks Roger.
I have turned the reproducer attached to JDK-8152515 into a
jtreg test. The test creates some logger and registers a handler
that throws LinkageError when closed.
The test passes as expected with the fix.
Without the fix however, it makes jtreg fail in timeout
(which is a bit strange):
----------System.out:(2/193)----------
[LinkageErrorTest$TestHandler@3a7f70{closed=false},
LinkageErrorTest$TestHandler@25da7d46{closed=false},
LinkageErrorTest$TestHandler@6c57d74f{closed=true}]
Timeout signalled after 120 seconds
----------System.err:(9/621)----------
STATUS:Passed.
java.lang.LinkageError
at LinkageErrorTest$TestHandler.close(LinkageErrorTest.java:63)
at
java.util.logging.LogManager.closeHandlers(java.logging@9-internal/LogManager.java:1449)
at
java.util.logging.LogManager.resetLogger(java.logging@9-internal/LogManager.java:1459)
at
java.util.logging.LogManager.resetLoggerContext(java.logging@9-internal/LogManager.java:1439)
at
java.util.logging.LogManager.reset(java.logging@9-internal/LogManager.java:1424)
at
java.util.logging.LogManager$Cleaner.run(java.logging@9-internal/LogManager.java:284)
STATUS:Failed.`main' threw exception: java.lang.LinkageError
----------rerun:(21/1847)*----------
I am not sure whether I should push this test or not...
What do you think? Is that behavior going to stay stable?
I mean - can we rely on the fact that jtreg will always
fail this test if the fix is not present?
Here is the webrev with the test:
http://cr.openjdk.java.net/~dfuchs/webrev_8152515/webrev.01
-- daniel
On 10/28/2016 7:51 AM, Daniel Fuchs wrote:
Hi,
Please find below a trivial patch for:
8152515: (logging) LogManager.resetLogger should ignore LinkageError
https://bugs.openjdk.java.net/browse/JDK-8152515
Patch:
http://cr.openjdk.java.net/~dfuchs/webrev_8152515/webrev.00/
The issue might occur at shutdown, when a handler that makes uses
of some APIs provided by an OSGI bundle which was already closed
by the shutdown process is in turn closed by the LogManager.Cleaner
thread. In that case some subclasses of LinkageError may be thrown,
interrupting the reset process and preventing other handlers from
being closed properly.
The patch proposes to trivially ignore LinkageError at shutdown while
the LogManager.Cleaner thread is running.
best regards,
-- daniel