[9] RFR(S): 8162540: Crash in C2 escape analysis with assert: "node should be registered"

Tobias Hartmann tobias.hartmann at oracle.com
Thu Jul 28 06:00:08 UTC 2016


Thanks, Vladimir!

For the record: I'll push this into jdk9/hs after RBT testing.

Best regards,
Tobias

On 27.07.2016 19:59, Vladimir Kozlov wrote:
> Yes, these are new nodes and new type of RAW access from Unsafe.
> Changes are good.
> 
> Thanks,
> Vladimir
> 
> On 7/27/16 7:03 AM, Tobias Hartmann wrote:
>> Hi,
>>
>> please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8162540
>> http://cr.openjdk.java.net/~thartmann/8162540/webrev.00/
>>
>> We hit an assert in escape analysis because a field in the connection graph is not marked as "oop" although it points to an oop field:
>> Field NoEscape(NoEscape) +24 ( 5610 )[ [ ]] 5370 AddP === _ 5610 5610 1498 [[ 5060 6247 ]] Oop:java/lang/Object+24 * [narrow] !jvms: LogManager::initializeGlobalHandlers @ bci:-1 LogManager::access$1800 @ bci:1 LogManager$RootLogger::accessCheckedHandlers @ bci:4 Logger::getHandlers @ bci:1 LogManager::closeHandlers @ bci:1 LogManager::resetLogger @ bci:2 LogManager::resetLoggerContext @ bci:39
>>
>> The AddP is used as input to a CompareAndSwapN intrinsic (see comments in the bug). ConnectionGraph::is_oop_field() misses the special cases for GetAndSet, CompareAndExchange and CompareAndSwap intrinsics emitting unsafe accesses to oop fields.
>>
>> Tested with failing tests, JPRT and RBT (running).
>>
>> Thanks,
>> Tobias
>>


More information about the hotspot-compiler-dev mailing list