RFR(XS): 8251527: CTW: C2 (Shenandoah) compilation fails with SEGV due to unhandled catchproj == NULL
Christian Hagedorn
christian.hagedorn at oracle.com
Thu Aug 20 09:45:05 UTC 2020
Hi Roland
That looks good to me.
Best regards,
Christian
On 20.08.20 11:12, Roland Westrelin wrote:
>
> http://cr.openjdk.java.net/~roland/8251527/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-8251527
>
> This triggers with Shenandoah but the fix (and the bug) is in shared
> C2 code.
>
> CallNode::extract_projections(), once it has found the control ProjNode
> looks for the CatchNode at the first use of the ProjNode. In the case of
> the crash, the ProjNode has more than one use and the first use is not
> the CatchNode (but a pinned LoadNode). I propose using unique_ctrl_out()
> instead.
>
> The ProjNode has a LoadNode because one is pinned on a ProjNode by
> PhaseIdealLoop::split_if_with_blocks_post() when it tries to sink the
> LoadNode out of loop. A LoadNode becomes the first use of the ProjNode
> after the loop body is cloned during unswitching.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list