Kenneth W DeLong created GROOVY-11126: -----------------------------------------
Summary: Null-safe Dereference fails after time Key: GROOVY-11126 URL: https://issues.apache.org/jira/browse/GROOVY-11126 Project: Groovy Issue Type: Bug Components: bytecode Affects Versions: 4.0.12, 4.0.11 Environment: Zulu Java 17.0.7, Amazon Linux 2023, Spring Boot 3.1.1 Reporter: Kenneth W DeLong I have a server-side app that works perfectly for a long time (18-24h) then suddenly starts throwing "impossible" errors. {code:java} Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "self" is null at org.codehaus.groovy.runtime.StringGroovyMethods.size(StringGroovyMethods.java:2693) at org.codehaus.groovy.runtime.dgm$1323.doMethodInvoke(Unknown Source) at com.hatchbaby.model.ColorParser.isOneByteFormat(ColorParser.groovy:74) at com.hatchbaby.model.ColorParser.getRed(ColorParser.groovy:13) at com.hatchbaby.domain.Content.getRed(Content.groovy:173) {code} The line of code at ColorParser:74 is: {code:java} int size = color?.size() ?: 0 {code} The variable `color` is a String. The null-safe dereference operator has ceased to short-circuit. This code is years old and has run flawlessly. Since the upgrade from Spring Boot 2.7.4 to Boot 3.1.1, it runs fine for 18-24h, then it starts throwing NullPointerExceptions. This is happening at a couple of other places in the code, all on null-safe dereferences that don't short-circuit. The above code is hit 9,000+ times/day. We have a cluster of servers and they seem to develop the problem within a couple hours of each other. The server is running with Spring Boot 3.1.1 (hence Groovy 4.0.12) running on Java 17.0.7 (Azul Zulu) on Amazon Linux 2023. I have tried to reproduce the error by running a tiny program that mimics the error, but so far after running 1.4 million invocations over 24h with no errors (as you might expect). -- This message was sent by Atlassian Jira (v8.20.10#820010)