Skip to content

[Bug]: S7 protocol leaks memory #2248

@michele-tramonti

Description

@michele-tramonti

What happened?

i'm using plc4j version 0.13.0, connecting to S7_400.
sometimes (I'm not able to identify the specific reason or pattern) i see this error in log:

[2025-09-04 15:51:56] [info] Recent access records:
[2025-09-04 15:51:56] [info] Created at:
[2025-09-04 15:51:56] [info] #011io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:410)
[2025-09-04 15:51:56] [info] #011io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188)
[2025-09-04 15:51:56] [info] #011io.netty.buffer.UnsafeByteBufUtil.copy(UnsafeByteBufUtil.java:454)
[2025-09-04 15:51:56] [info] #011io.netty.buffer.PooledUnsafeDirectByteBuf.copy(PooledUnsafeDirectByteBuf.java:216)
[2025-09-04 15:51:56] [info] #011io.netty.buffer.AbstractByteBuf.copy(AbstractByteBuf.java:1194)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.encode(S7HMuxImpl.java:136)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.encode(S7HMuxImpl.java:1)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageCodec$2.encode(MessageToMessageCodec.java:85)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:130)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:113)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.ByteToMessageCodec.write(ByteToMessageCodec.java:108)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:130)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113)
[2025-09-04 15:51:56] [info] #011io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:130)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950)
[2025-09-04 15:51:56] [info] #011io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000)
[2025-09-04 15:51:56] [info] #011io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.spi.Plc4xNettyWrapper$1.sendToWire(Plc4xNettyWrapper.java:100)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:108)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:1)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$42(S7ProtocolLogic.java:1535)
[2025-09-04 15:51:56] [info] #011org.apache.plc4x.java.spi.transaction.RequestTransactionManager$TransactionOperation.run(RequestTransactionManager.java:225)
[2025-09-04 15:51:56] [info] #011java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[2025-09-04 15:51:56] [info] #011java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[2025-09-04 15:51:56] [info] #011java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[2025-09-04 15:51:56] [info] #011java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[2025-09-04 15:51:56] [info] #011java.base/java.lang.Thread.run(Thread.java:829)

Version

v0.13.0

Programming Languages

  • plc4c
  • plc4go
  • plc4j
  • plc4net
  • plc4py

Protocols

  • AB-Ethernet
  • ADS /AMS
  • BACnet/IP
  • C-Bus
  • CANopen
  • EtherNet/IP
  • Firmata
  • IEC-69870
  • KNXnet/IP
  • Modbus
  • OPC-UA
  • Profinet
  • S7
  • S7-light

Metadata

Metadata

Assignees

No one assigned

    Labels

    S7https://plc4x.apache.org/users/protocols/s7.htmljavaPull requests that update Java code

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions