RFR (JAXP): 8146961: Fix PermGen memory leaks caused by static final Exceptions
huizhe.wang at oracle.com
Mon Aug 15 19:08:45 UTC 2016
Note that DOM spec about error handling: If errors occur during the
invocation of this method, such as an attempt to update a read-only node
or a |Node.nodeName| contains an invalid character according to the XML
version in use, errors or warnings (|DOMError.SEVERITY_ERROR| or
|DOMError.SEVERITY_WARNING|) will be reported using the
|DOMErrorHandler| object associated with the "error-handler " parameter.
Note this method might also report fatal errors (
|DOMError.SEVERITY_FATAL_ERROR|) if an implementation cannot recover
from an error.
So in this case, it doesn't seem to be "processing aborted by the user"
as noted where RE was caught. When a DOM error happens, e.g. not
wellformed, if no errorHandler is registered, the process will abort
without an error. It's possible to handle the case without throw&catch
RE. Please investigate.
On 8/15/16, 11:09 AM, Joe Wang wrote:
> Hi Aleksej,
> I suggest we get rid of the static abort. If RuntimeException happens,
> check where it happens. The first use case looks suspicious as it just
> returns if it's an instance of RE. For the 2nd case in DOM error
> report, let's throw a RuntimeException with the specified error
> message if error happens, and there's no handler or the handler failed
> to handle it. (would be better than an empty RE)
> On 8/15/16, 10:38 AM, Aleks Efimov wrote:
>> Please, help to review the fix for memory leak  in
>> com.sun.org.apache.xerces.internal.dom.DOMNormalizer that is caused
>> by usage of static final exceptions.
>> This problem was already fixed in Apache Xerces project  and I
>> would like to backport it to JDK9 Xerces implementation.
>> Webrev with the changes:
>> The Tomcat reproducer attached to the bug report fails without the
>> fix and passes with the fix.
>> The JPRT and JCK testing shows no jaxp tests failures with the
>> proposed fix.
>> With Best Regards,
>>  https://bugs.openjdk.java.net/browse/JDK-8146961
>>  https://issues.apache.org/jira/browse/XERCESJ-1667
More information about the core-libs-dev