[16] RFR(S): 8248552: C2 crashes with SIGFPE due to division by zero

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 10 23:25:03 UTC 2020


Looks good.

Thanks,
Vladimir

On 7/10/20 12:37 AM, Christian Hagedorn wrote:
> Hi
> 
> Please review the following patch:
> https://bugs.openjdk.java.net/browse/JDK-8248552
> http://cr.openjdk.java.net/~chagedorn/8248552/webrev.00/
> 
> In the failing testcase, C2 removes a zero check for a division/modulo node n based on the type information of the loop 
> induction variable phi p (always between 1 and 50 and never 0). However, n is later split through p and ends up after 
> the AddNode which updates the induction variable p. In the last iteration j equals 2 and is then updated to 0. The 
> division/modulo node n is now executed before the loop limit check which results in a SIGFPE.
> 
> The fix bails out of PhaseIdealLoop::split_thru_phi if a division or modulo node has its zero check removed (i.e. 
> control in NULL) and is split through a phi which has an input that could be zero. This should only happen for an 
> induction variable phi of a trip-counted (integer) loop.
> 
> Best regards,
> Christian


More information about the hotspot-compiler-dev mailing list