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

Igor Ignatyev igor.ignatyev at oracle.com
Fri Feb 15 00:20:06 UTC 2019


Hi David,

the fix looks good to me. does it make sense to harden the test and assert the message?

-- Igor  

> On Feb 14, 2019, at 2:58 PM, David Holmes <david.holmes at oracle.com> 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