Request for review (S): CR 6889740 - G1: OpenDS fails with "unhandled exception in compiled code"

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Wed Oct 28 21:03:27 UTC 2009


Looks good.

Vladimir

john cuthbertson - Sun Microsystems wrote:
> Hi Everyone,
> 
> I've tweaked the change based on feedback from Christian and Tom. The 
> new webrev can be found here:
> 
> http://cr.openjdk.java.net/~johnc/6889740/webrev.1/
> 
> Regards,
> 
> JohnC
> 
> On 10/27/09 14:51, john cuthbertson - Sun Microsystems wrote:
>> Hi Everyone,
>>
>> Can I have a couple of volunteers to review the proposed fix for this 
>> bug? The webrev can be found at 
>> http://cr.openjdk.java.net/~johnc/6889740/webrev.0/.
>>
>> The issue is that bad code was being generated for the store operation 
>> in the null case of the aastore bytecode template. The bad code was 
>> caused by there being only one version of the store_heap_oop routine 
>> that took a Register as the second argument. When the calling code 
>> passed in NULL_WORD (0) to this routine the value was used as a 
>> Register encoding and converted to Register(0), which is rax. Thus the 
>> generated store was "mov (dst), $rax" instead of "mov (dst), $0x0". 
>> This is normally not a problem as the preceding code in the template 
>> fetches the value to be stored into rax. When the G1 pre-barrier code 
>> calls the runtime, however, the value in rax can be overwritten and 
>> the heap can become corrupted.
>>
>> Testing: OpenDS, jprt, refworkload, and the GC test suite.
>>
>> Thanks,
>>
>> JohnC
> 



More information about the hotspot-gc-dev mailing list