Code review request: 6973831 NPE when printing stack trace of OOME

David Holmes David.Holmes at oracle.com
Thu Aug 12 21:00:18 UTC 2010


Mandy Chung said the following on 08/13/10 04:29:
>  On 08/11/10 18:26, David Holmes wrote:
>> I'm a bit behind on this functionality as I have no ideas what a 
>> suppressed exception is. :) 
> 
> FWIW.  The suppressed exceptions are added for automatic resource 
> management (6911258).
>    
> http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000011.html

Can't say I'm enthralled with the suppressed-exception part of this.

>> That aside I'm curious as to the expected multi-thread usage for an 
>> exception that requires these things to be thread-safe ? Given an 
>> exception occurs in a given thread, passing it to another thread 
>> should require some form of safe-publication.
>>
> 
> Agree.  May I count you as a reviewer?
>    http://cr.openjdk.java.net/~mchung/6973831/webrev.02/

Reviewed. :)

David

> Thanks
> Mandy
> 
>> David
>>
>> Mandy Chung said the following on 08/12/10 07:57:
>>>  On 08/11/10 14:43, Mandy Chung wrote:
>>>>  On 08/11/10 14:03, Rémi Forax wrote:
>>>>> Brian, Mandy,
>>>>> It seems this is not the sole thread-safety issue,
>>>>> access to fields 'cause' or 'stackTrace' aren't thread safe too and 
>>>>> detailMessage is not final.
>>>>>
>>>>
>>>> I agree that the getCause and setStackTrace method need to be 
>>>> synchronized.  On the other hand, the initCause and setStackTrace 
>>>> methods are used to override the values initialized in the 
>>>> constructor and so access to these fields are likely safe in 
>>>> practice.  I can fix it as part of this fix.
>>>>
>>>
>>> Fixed the getCause and setStackTrace methods:
>>>    http://cr.openjdk.java.net/~mchung/6973831/webrev.02/
>>>
>>> Mandy
>>>
>>>> The "detailMessage" is not final because the VM in fact preallocates 
>>>> Throwable object (OOME and ArithmeticException) and then sets the 
>>>> 'detailMessage' field directly (as the constructor is not invoked).
>>>>
>>>> Mandy
>>>
> 



More information about the core-libs-dev mailing list