RFR (S): 8218939: vm/mlvm/anonloader/stress/byteMutation crashed on windows

David Holmes david.holmes at oracle.com
Fri Feb 15 00:50:51 UTC 2019


Hi Coleen,

Thanks for the looking at this.

On 15/02/2019 10:09 am, coleen.phillimore at oracle.com wrote:
> 
> I see how this happened.
> 
>    char* bytes = (char*)name->bytes();
>    unsigned int length = name->utf8_length();
> 
> We used to get signature with as_utf8_flexible_buffer.

Right! I was wondering how this had suddenly started appearing. The 
subtlety is that as_utf8_flexible_buffer was actually implemented as a 
call to as_C_string_flexible_buffer so we were in fact getting a 
NUL-terminated char* previously.

> This looks good.  Thank you for fixing this.

Thanks,
David

> 
> Coleen
> 
> On 2/14/19 5:58 PM, David Holmes wrote:
>> webrev: http://cr.openjdk.java.net/~dholmes/8218939/webrev
>> bug: https://bugs.openjdk.java.net/browse/JDK-8218939
>>
>> The bytes() in a Symbol are UTF8 but do not form a NUL-terminated 
>> C-string. In a couple of places in the classfile parser we are 
>> treating it as NUL-terminated:
>>
>> - in name validation we were calling strchr to find the semi-colon, 
>> but this could run off through memory if there was no semi-colon (as 
>> per the testcase). This is replaced with memchr which takes the 
>> expected length.
>>
>> - in formatting the exception message we used %s but instead we need 
>> %.*s and pass the length
>>
>> There's a minor change to a test to print the exception information as 
>> that exposes the fact we were doing things incorrectly e.g:
>>
>> java.lang.ClassFormatError: Illegal class name 
>> "p1//BadInterface1\u00f1\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00abU" 
>> in class file
>>
>> versus (after bug fix)
>>
>> java.lang.ClassFormatError: Illegal class name "p1//BadInterface1" in 
>> class file UseBadInterface1
>>
>> Testing:
>>  - re-ran failing test on Windows with seeds known to have caused 
>> failures
>>  - ran ran failing test on Windows 150 times with random seeds
>>  - tiers 1-3
>>
>> Thanks,
>> David
>> -----
> 


More information about the hotspot-runtime-dev mailing list