[15] RFR(XS): 8239069: C2: SIGSEGV in IdealGraphPrinter::walk_nodes due to C->root() being NULL
    Christian Hagedorn 
    christian.hagedorn at oracle.com
       
    Fri Feb 14 09:56:41 UTC 2020
    
    
  
Hi
Please review the following patch:
https://bugs.openjdk.java.net/browse/JDK-8239069
http://cr.openjdk.java.net/~chagedorn/8239069/
This happens for the method in the replay file because C2 calls 
Compile::record_failure() twice consecutively which calls 
Compile::print_method() each time. In the first call of 
Compile::record_failure(), it sets _root to NULL after printing the 
ideal graph [1]. In the second call of Compile::record_failure(), it 
calls Compile::print_method() again. But this time C->root() is NULL. As 
a result, it crashes later at [2] when trying to dereference 'start' 
which is C->root() and therefore NULL.
The fix is straight forward to not print the ideal graph if the root 
node to start the printing is NULL. This crash only happens in rare cases.
Thank you!
Best regards,
Christian
[1] 
http://hg.openjdk.java.net/jdk/jdk/file/f82f59ef79f0/src/hotspot/share/opto/compile.cpp#l3940
[2] 
http://hg.openjdk.java.net/jdk/jdk/file/f82f59ef79f0/src/hotspot/share/opto/idealGraphPrinter.cpp#l622
    
    
More information about the hotspot-compiler-dev
mailing list