On 20/01/2017 08:39, Rémy Maucherat wrote:
> 2017-01-18 19:46 GMT+01:00 <ma...@apache.org>:
> 
>> Author: markt
>> Date: Wed Jan 18 18:46:27 2017
>> New Revision: 1779370
>>
>> URL: http://svn.apache.org/viewvc?rev=1779370&view=rev
>> Log:
>> Java 9 can throw a Java 9 specific exception here
>> (InaccessibleObjectException) so tweak the handling
>>
> 
> This isn't supposed to happen following r1762753. If this no longer works,
> it is necessary to find a new hack that fixes it or scream at Oracle, since
> otherwise direct buffers cannot be used at all (they will leak memory
> really fast).

We probably do need to raise this with Oracle.

For now, I'm thinking that we treat this the same way we handle the Java
9 reflection issues with the memory leak protection: log an error saying
what setting needs to be added.

Mark


> 
> Rémy
> 
> 
>>
>> Modified:
>>     tomcat/trunk/java/org/apache/tomcat/util/buf/ByteBufferUtils.java
>>
>> Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/
>> ByteBufferUtils.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/
>> tomcat/util/buf/ByteBufferUtils.java?rev=1779370&r1=1779369&r2=1779370&
>> view=diff
>> ============================================================
>> ==================
>> --- tomcat/trunk/java/org/apache/tomcat/util/buf/ByteBufferUtils.java
>> (original)
>> +++ tomcat/trunk/java/org/apache/tomcat/util/buf/ByteBufferUtils.java Wed
>> Jan 18 18:46:27 2017
>> @@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
>>
>>  import org.apache.juli.logging.Log;
>>  import org.apache.juli.logging.LogFactory;
>> +import org.apache.tomcat.util.ExceptionUtils;
>>  import org.apache.tomcat.util.res.StringManager;
>>
>>  public class ByteBufferUtils {
>> @@ -46,9 +47,11 @@ public class ByteBufferUtils {
>>                  cleanMethodLocal = cleanerObject.getClass().
>> getMethod("clean");
>>              }
>>              cleanMethodLocal.invoke(cleanerObject);
>> -        } catch (IllegalAccessException | IllegalArgumentException
>> -                | InvocationTargetException | NoSuchMethodException |
>> SecurityException e) {
>> -            log.warn(sm.getString("byteBufferUtils.cleaner"), e);
>> +        } catch (Throwable t) {
>> +            // Use throwable as when running on Java 9 we may see a Java 9
>> +            // specific exception (InaccessibleObjectException) here.
>> +            ExceptionUtils.handleThrowable(t);
>> +            log.warn(sm.getString("byteBufferUtils.cleaner"), t);
>>              cleanerMethodLocal = null;
>>              cleanMethodLocal = null;
>>          }
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to