RFR JDK-8028275: Metaspace ShrinkGrowTest causes fatal error if run with JFR

Zhengyu Gu zhengyu.gu at oracle.com
Mon Jan 6 12:48:25 PST 2014


Hi Coleen,

Thanks for the review.

ExceptionMark's destructor only report pending exception as fatal error after initialize is done (is_init_completed() == true), otherwise, it will call vm_exit_during_initialization(), just as you suggested.  Only after set_init_completed() is called (thread.cpp #3568), pending exception has to be checked.




Thanks,

-Zhengyu 



On Jan 6, 2014, at 3:37 PM, Coleen Phillimore wrote:

> 
> Zhengyu,
> 
> There are other calls to initialize_class in Threads::create_vm() that can create a pending exception and return with CHECK_0 after the EXCEPTION MARK.
> 
> It seems to me that the EXCEPTION_MARK should be removed and the caller of this function checks for the pending exception.   Better yet would be to encapsulate the calls to initialize_class into a function(s) and check the return for pending exception and exit the jvm with jvm_exit_during_initialization().
> 
> Coleen
> 
> On 01/06/2014 10:55 AM, Zhengyu Gu wrote:
>> This is another bug related on using EXCEPTION_MARK and CHECK macros. JSR292 initialization is done after init_completed flag is set to true, so any pending exceptions from initializing JSR292 classes can cause CHECK macro to return, and trigger the assertion in ExceptionMark destructor.
>> 
>> 
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8028275
>> Webrev: http://cr.openjdk.java.net/~zgu/8028275/webrev.00/
>> 
>> Test:
>>   Tested the fix on reported platform.
>> 
>> 
>> Thanks,
>> 
>> -Zhengyu
> 



More information about the hotspot-runtime-dev mailing list