RFR: 8152515: (logging) LogManager.resetLogger should ignore LinkageError
Roger Riggs
Roger.Riggs at Oracle.com
Fri Oct 28 16:43:37 UTC 2016
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 at 3a7f70{closed=false},
> LinkageErrorTest$TestHandler at 25da7d46{closed=false},
> LinkageErrorTest$TestHandler at 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 at 9-internal/LogManager.java:1449)
> at
> java.util.logging.LogManager.resetLogger(java.logging at 9-internal/LogManager.java:1459)
> at
> java.util.logging.LogManager.resetLoggerContext(java.logging at 9-internal/LogManager.java:1439)
> at
> java.util.logging.LogManager.reset(java.logging at 9-internal/LogManager.java:1424)
> at
> java.util.logging.LogManager$Cleaner.run(java.logging at 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
>>
>
More information about the core-libs-dev
mailing list