[9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines

Albert albert.noll at oracle.com
Fri Jan 24 12:52:26 PST 2014


Thank you, Vladimir.

Best,
Albert

On 01/24/2014 08:41 PM, Vladimir Kozlov wrote:
> Good.
>
> Thanks,
> Vladimir
>
> On 1/24/14 11:20 AM, Albert wrote:
>> Hi Vladimir,
>>
>> thanks for looking at the patch and catching the error.
>> Here is the corrected version.
>>
>> http://cr.openjdk.java.net/~anoll/8009738/webrev.01/
>> <http://cr.openjdk.java.net/%7Eanoll/8009738/webrev.01/>
>>
>> Best,
>> Albert
>>
>> On 01/24/2014 03:53 PM, Vladimir Kozlov wrote:
>>> Albert,
>>>
>>> You made typo: -Xms256m instead of -Xmx256m
>>> You limit only young gen.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 1/24/14 5:50 AM, Albert wrote:
>>>> Hi,
>>>>
>>>> could I get reviews for this small patch?
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8009738
>>>> webrev: http://cr.openjdk.java.net/~anoll/8009738/webrev.00/
>>>> <http://cr.openjdk.java.net/%7Eanoll/8009728/webrev.00/>
>>>>
>>>> Problem: test times out on big machines
>>>>
>>>> Solution: add -Xmx256m -XX:ParallelGCThreads=4 to @run command (as
>>>> described in the bug description).
>>>> I verified that the old bug is still triggered with the added flags
>>>> by undoing the
>>>> changes (except for asserts) that where committed with
>>>> https://bugs.openjdk.java.net/browse/JDK-6826736 .
>>>> The test does not complete, since and fails with an assert:
>>>>
>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>> #
>>>> #  Internal Error
>>>> (/export/anoll/latest/src/share/vm/compiler/oopMap.cpp:438),
>>>> pid=24776, tid=140280127788800
>>>> #  assert(Universe::heap()->is_in_or_null(*loc)) failed: found non
>>>> oop pointer
>>>>
>>>> A rough performance evaluation on a 32-core linux (64-bit) system
>>>> shows that the execution time
>>>> of the test goes down to ~40 seconds. Without the suggested changes,
>>>> the execution time is around
>>>> 9 minutes on the same machine.
>>>>
>>>> Best,
>>>> Albert
>>>>
>>>> These changes trigger the assert described above:
>>>>
>>>> --- old/src/share/vm/compiler/oopMap.cpp    2014-01-24
>>>> 14:46:14.370474128 +0100
>>>> +++ new/src/share/vm/compiler/oopMap.cpp    2014-01-24
>>>> 14:46:14.302474129 +0100
>>>> @@ -392,14 +392,15 @@
>>>>             oop *base_loc    =
>>>> fr->oopmapreg_to_location(omv.content_reg(), reg_map);
>>>>             oop *derived_loc = loc;
>>>>             oop val = *base_loc;
>>>> -          if (val == (oop)NULL || 
>>>> Universe::is_narrow_oop_base(val)) {
>>>> +          derived_oop_fn(base_loc, derived_loc);
>>>> +          /*if (val == (oop)NULL ||
>>>> Universe::is_narrow_oop_base(val)) {
>>>>               // Ignore NULL oops and decoded NULL narrow oops which
>>>>               // equal to Universe::narrow_oop_base when a narrow oop
>>>>               // implicit null check is used in compiled code.
>>>>               // The narrow_oop_base could be NULL or be the address
>>>>               // of the page below heap depending on compressed oops
>>>> mode.
>>>>             } else
>>>> -            derived_oop_fn(base_loc, derived_loc);
>>>> +            derived_oop_fn(base_loc, derived_loc);*/
>>>>           }
>>>>           oms.next();
>>>>         }  while (!oms.is_done());
>>>> @@ -414,7 +415,7 @@
>>>>         oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map);
>>>>         if ( loc != NULL ) {
>>>>           if ( omv.type() == OopMapValue::oop_value ) {
>>>> -          oop val = *loc;
>>>> +         /* oop val = *loc;
>>>>             if (val == (oop)NULL || 
>>>> Universe::is_narrow_oop_base(val)) {
>>>>               // Ignore NULL oops and decoded NULL narrow oops which
>>>>               // equal to Universe::narrow_oop_base when a narrow oop
>>>> @@ -422,7 +423,7 @@
>>>>               // The narrow_oop_base could be NULL or be the address
>>>>               // of the page below heap depending on compressed oops
>>>> mode.
>>>>               continue;
>>>> -          }
>>>> +          }*/
>>>>   #ifdef ASSERT
>>>>             if ((((uintptr_t)loc & (sizeof(*loc)-1)) != 0) ||
>>>>                !Universe::heap()->is_in_or_null(*loc)) {
>>>> --- old/src/share/vm/runtime/stackValue.cpp    2014-01-24
>>>> 14:46:14.374474128 +0100
>>>> +++ new/src/share/vm/runtime/stackValue.cpp    2014-01-24
>>>> 14:46:14.302474129 +0100
>>>> @@ -108,7 +108,8 @@
>>>>       }
>>>>   #endif
>>>>       case Location::oop: {
>>>> -      oop val = *(oop *)value_addr;
>>>> +        Handle h(*(oop *)value_addr); // Wrap a handle around the oop
>>>> +      /*oop val = *(oop *)value_addr;
>>>>   #ifdef _LP64
>>>>         if (Universe::is_narrow_oop_base(val)) {
>>>>            // Compiled code may produce decoded oop = narrow_oop_base
>>>> @@ -118,7 +119,7 @@
>>>>            val = (oop)NULL;
>>>>         }
>>>>   #endif
>>>> -      Handle h(val); // Wrap a handle around the oop
>>>> +      Handle h(val); // Wrap a handle around the oop*/
>>>>         return new StackValue(h);
>>>>       }
>>>>       case Location::addr: {
>>



More information about the hotspot-compiler-dev mailing list