review (XS) for 7018506: CTW swallowing OOMs after symbol changes

Tom Rodriguez tom.rodriguez at oracle.com
Thu Feb 10 12:09:22 PST 2011


On Feb 10, 2011, at 11:57 AM, Vladimir Kozlov wrote:

> Tom,
> 
> I think new method should return boolean if exception occurred.
> There is checked variable 'exception_occurred' to which it
> should be assigned to:
> 
> 1324       bool exception_occurred = clear_pending_exception_if_not_oom(CHECK);

I considered that but the natural way to use that is:

                if (clear_pending_exception_if_not_oom(CHECK)) {

but having CHECK macros in conditional doesn't work right.  Also I think the logic only wants to skip if something went wrong with the initial class load and initialize, not with the constant pool preload_and_init part.

tom

> 
> 1325       if (CompileTheWorldPreloadClasses && k.not_null()) {
> 1326         constantPoolKlass::preload_and_initialize_all_classes(k->constants(), THREAD);
> 1327         if (HAS_PENDING_EXCEPTION) {
> 1328           // If something went wrong in preloading we just ignore it
> 1329           exception_occurred = clear_pending_exception_if_not_oom(CHECK);
> 1330           tty->print_cr("Preloading failed for (%d) %s", _compile_the_world_counter, buffer);
> 1331         }
> 1332       }
> 
> Thanks,
> Vladimir
> 
> Tom Rodriguez wrote:
>> Coleen pointed out there are other unchecked CLEAR_PENDING_EXCEPTION calls so I've modified it to check at all of them.  Please re-review.
>> tom
>> On Feb 10, 2011, at 11:36 AM, Igor Veresov wrote:
>>> Looks good.
>>> 
>>> igor
>>> 
>>> On 2/10/11 11:13 AM, Tom Rodriguez wrote:
>>>> http://cr.openjdk.java.net/~never/7018506
>>>> 
>>>> 7018506: CTW swallowing OOMs after symbol changes
>>>> Reviewed-by:
>>>> 
>>>> Previously the symbol creation could throw an OOM for perm but now it
>>>> can't and the next two exception points just swallowed exception so it
>>>> keeps on going.  The fix is to always allow OOMs to be propagated.
>>>> Tested with CTW.



More information about the hotspot-compiler-dev mailing list