pitest icon indicating copy to clipboard operation
pitest copied to clipboard

Minion exited abnormally with java records and jakarta.validation.constraints.NotNull

Open ilopezv opened this issue 2 months ago • 2 comments

Running pitest with the following config:

  • pitest-maven:1.21.0
  • pitest-junit5-plugin: 1.2.3
  • junit-jupiter: 1.21.3
  • junit-platform-engine:1.12.2
  • java-25
  • maven 3.9.11
  • Spring Boot 3.5.6
  • without arcmutate

Pitest features:

  • -frecord

Produces mutation error analizing java records with properties tagged with jakarta @NotNull:

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : BellSoft
Version : 25+37-LTS
Uptime : 42256
Input ->
 1 : --add-opens=java.base/java.lang=ALL-UNNAMED
 2 : --enable-native-access=ALL-UNNAMED
 3 : --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
 4 : --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
 5 : --add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
 6 : --add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
 7 : --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
 8 : --add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
 9 : --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
 10 : --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
 11 : --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
 12 : --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
 13 : --sun-misc-unsafe-memory-access=allow
 14 : --enable-native-access=ALL-UNNAMED
 15 : -Dclassworlds.conf=C:/santalucia/apache-maven-3.9.11/bin/m2.conf
 16 : -Dmaven.home=C:/santalucia/apache-maven-3.9.11
 17 : -Dlibrary.jansi.path=C:/santalucia/apache-maven-3.9.11/lib/jansi-native
 18 : -Dmaven.multiModuleProjectDirectory=C:/santalucia/workspace-sb3/ams-3
BootClassPathSupported : false

        at org.pitest.util.Unchecked.translateCheckedException(Unchecked.java:20)
        at org.pitest.util.SafeDataInputStream.readByte(SafeDataInputStream.java:78)
        at org.pitest.util.SocketReadingCallable.receiveResults(SocketReadingCallable.java:57)
        at org.pitest.util.SocketReadingCallable.call(SocketReadingCallable.java:34)
        at org.pitest.util.SocketReadingCallable.call(SocketReadingCallable.java:11)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
        ... 1 more
Caused by: java.net.SocketException: Connection reset
        at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:316)
        at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:354)
        at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:798)
        at java.base/java.net.Socket$SocketInputStream.implRead(Socket.java:974)
        at java.base/java.net.Socket$SocketInputStream.read(Socket.java:964)
        at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:289)
        at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:308)
        at java.base/java.io.DataInputStream.readUnsignedByte(DataInputStream.java:300)
        at java.base/java.io.DataInputStream.readByte(DataInputStream.java:280)
        at org.pitest.util.SafeDataInputStream.readByte(SafeDataInputStream.java:76)
        ... 5 more
18:52:57 PIT >> WARNING : Minion exited abnormally due to RUN_ERROR

example code that fails because of @NotNull (same class works well without @NotNull)

package com.company.arq.testcontainers.properties.reload;

import jakarta.validation.constraints.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.bind.DefaultValue;
import org.springframework.validation.annotation.Validated;

@Validated
@ConfigurationProperties(prefix = "embedded.azurite")
public record AzuriteProperties(
    @NotNull @DefaultValue("127.0.0.1") String host,
    @NotNull @DefaultValue("10000") Integer blobStoragePort,

and pitest produces a jdk error log that seems related to java.lang.NoSuchMethodError errors

Event: 2.168 Thread 0x000001ad03b79110 Exception <a 'java/lang/IncompatibleClassChangeError'{0x0000000620e3a9f8}: Found class java.lang.Object, but interface was expected> (0x0000000620e3a9f8) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 871]
Event: 2.209 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x00000006202ade00}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, int)'> (0x00000006202ade00) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.210 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x00000006202b6fa8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, int)'> (0x00000006202b6fa8) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.221 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x00000006203e72c8}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, int, java.lang.Object)'> (0x00000006203e72c8) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.221 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x00000006203f78e8}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000006203f78e8) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.222 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x000000061fc0a3f0}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecialIFC(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x000000061fc0a3f0) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.292 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x00000006200c29a8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000006200c29a8) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.359 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x000000061fcdef28}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x000000061fcdef28) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.361 Thread 0x000001ad03b79110 Exception <a 'java/lang/NoSuchMethodError'{0x000000061fd05308}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x000000061fd05308) 
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 804]
Event: 2.414 Thread 0x000001ad2dde3d70 Exception <a 'java/lang/NoSuchMethodError'{0x0000000602810948}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, int)'> (0x0000000602810948) 

hs_err_pid3012.log

ilopezv avatar Oct 20 '25 17:10 ilopezv

Hi @ilopezv,

I’m also learning this library myself, and this issue caught my interest. so I've tried to match your environment as closely as possible, but that error does not seem to occur on my side.

Could you please share the exact test code you used that triggers this issue?(XxxTest.java for AzuriteProperties.java)

microness avatar Nov 04 '25 09:11 microness

problems seem to be related with java 25 as I can see in hs_err_pid3012.log: NoSuchMethodError // java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial

java Exception <a 'java/lang/NoSuchMethodError'{0x0000000602810948}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, int)'> (0x0000000602810948)

ilopezv avatar Nov 19 '25 12:11 ilopezv