RFR(S): 8162540: Crash in C2 escape analysis with assert: "node should be registered"
tobias.hartmann at oracle.com
Thu Jul 28 06:00:08 UTC 2016
For the record: I'll push this into jdk9/hs after RBT testing.
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.
> On 7/27/16 7:03 AM, Tobias Hartmann wrote:
>> please review the following patch:
>> 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).
More information about the hotspot-compiler-dev