Menu

#211 NullPointerException in org.rzo.yajsw.log.MyLogger

All
open
nobody
None
1
2025-04-09
2025-04-09
slo_velo
No

When an application is started with a custom java agent and if the agent throws an exception, yajsw throws a NullPointerException in org.rzo.yajsw.log.MyLogger.

Versions
Java version: 21
yajsw version: 13.13

Start command
java -javaagent:custom_agent.jar -jar my.jar

Reproduce

public class JarAgent {
    public static void premain(String agentArgs) {
        throw new RuntimeException("Boom!");
    }
}

Building an agent with Maven

            <!--
            A Java Agent is a regular jar with an additional manifest entry
            to bootstrap the premain method.
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Premain-Class>JarAgent</Premain-Class>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

Exception observed

 [null - INFO] 25-04-09 16:09:13  gobler terminated OUTPUT 5172  
Exception in org.rzo.yajsw.log.MyLogger: java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.hasRemaining()" because "this.buf" is null 
  org.rzo.yajsw.io.CyclicBufferFileInputStream$1.read(CyclicBufferFileInputStream.java:210)
  java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:345)
  java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
  java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:405)
  java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:350)
  java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:393)
  java.base/sun.nio.cs.StreamDecoder.lockedRead(StreamDecoder.java:217)
  java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:171)
  java.base/java.io.InputStreamReader.read(InputStreamReader.java:188)
  java.base/java.io.BufferedReader.fill(BufferedReader.java:160)
  java.base/java.io.BufferedReader.implReadLine(BufferedReader.java:370)
  java.base/java.io.BufferedReader.readLine(BufferedReader.java:347)
  java.base/java.io.BufferedReader.readLine(BufferedReader.java:436)
  org.rzo.yajsw.wrapper.AbstractWrappedProcess$Gobler.run(AbstractWrappedProcess.java:3281)
  java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
  java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
  java.base/java.lang.Thread.run(Thread.java:1583)

Requested behavior
Show the error in the wrapper logs that prevented the java application from starting.

Discussion


Log in to post a comment.