Request for review 6472925: OutOfMemoryError fails to generate stack trace as it now ought]

Coleen Phillimore coleen.phillimore at oracle.com
Fri Feb 4 05:08:30 PST 2011


Thank you for the suggestion for wording.  I'll change it to that.
Coleen

On 2/4/2011 12:05 AM, David Holmes wrote:
> Hi Coleen,
>
> Coleen Phillimore said the following on 02/04/11 14:28:
>> Posted wrong webrev:
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/6472925_3/
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=6472925_3
>
> Exactly what will appear on the error stream depends on where the
> secondary exception occurs and on what the UncaughtExceptionHandler
> actually does - it may not print at all. So the output here needs to be
> standalone and not make any assumptions about what may or may not have
> preceded it, so instead of:
>
>    jio_fprintf(defaultStream::error_stream(),
>       " - %s thrown from the UncaughtExceptionHandler\n",
>       Klass::cast(pending_exception()->klass())->external_name());
>
> I would suggest:
>
>   jio_fprintf(defaultStream::error_stream(),
>       "\nException: %s thrown from the UncaughtExceptionHandler in
> thread %s\n",
>       Klass::cast(pending_exception()->klass())->external_name(),
>       get_thread_name());
>
> The name of the thread is important for debugging.
>
> Thanks,
> David
>
>>
>> On 2/3/2011 11:17 PM, Coleen Phillimore wrote:
>>>
>>> Okay, how about this:
>>>
>>> Exception in thread "main" - java.lang.OutOfMemoryError thrown from 
>>> the UncaughtExceptionHandler
>>>
>>> And nothing new from jni_ExceptionDescribe.   See webrev:
>>>
>>> local webrev at http://jruntime.east.sun.com/~coleenp/webrev/6472925_3
>>> local bug link http://monaco.sfbay.sun.com/detail.jsf?cr=6472925
>>>
>>> thanks,
>>> Coleen
>>>
>>> On 2/3/2011 8:15 PM, David Holmes wrote:
>>>> Hi Coleen,
>>>>
>>>> I think there are two different cases here that need to be handled 
>>>> differently, or at least the message printed needs to be different.
>>>>
>>>> jni_ExceptionDescribe is a JNI method that can be called by a 
>>>> thread to do a stack dump of any currently pending exception. It is 
>>>> the native equivalent of doing:
>>>>
>>>>    catch (Throwable t) {
>>>>      t.printStackTrace();
>>>>    }
>>>>
>>>> However, the method says nothing about the possibility of a 
>>>> secondary exception occurring during this process - afterall this 
>>>> does not have to be implemented using Java code, so exceptions (or 
>>>> not) are an implementation artifact. Hence dropping the exception 
>>>> is not unreasonable. But this is not uncaught-exception handling so 
>>>> I'm not sure we should be reporting this secondary exception. If we 
>>>> do report it then the message should provide some context:
>>>>
>>>> "jni_ExceptionDescribe encountered an internal exception: ..."
>>>>
>>>> Then for the actual uncaught-exception handler case:
>>>>
>>>> "Secondary exception thrown from the UncaughtExceptionHandler: ..."
>>>>
>>>> I think it would be confusing to report the same info in both cases 
>>>> as they are very, very different.
>>>>
>>>> I also suspect that we may get complaints about "noise" here 
>>>> because we may find that in some circumstances (such as when 
>>>> applets get destroyed etc) that exceptions during uncaughtException 
>>>> handling are common.
>>>>
>>>> David
>>>>
>>>> Coleen Phillimore said the following on 02/04/11 02:16:
>>>>> Summary: Print an additional message for OOM during stack trace 
>>>>> printing
>>>>>
>>>>> ie:
>>>>>
>>>>> Exception in thread "main" . Uncaught exception of type 
>>>>> java.lang.OutOfMemoryError.
>>>>>
>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/6472925/
>>>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=6472925
>>>>>
>>>>> thanks,
>>>>> Coleen
>>>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list