Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception: bio is null via SSL#bioLengthByteBuffer #6466

Closed
rkapsi opened this issue Feb 27, 2017 · 6 comments
Closed

Exception: bio is null via SSL#bioLengthByteBuffer #6466

rkapsi opened this issue Feb 27, 2017 · 6 comments
Assignees
Labels
Milestone

Comments

@rkapsi
Copy link
Member

rkapsi commented Feb 27, 2017

Netty 4.1.9.Final-SNAPSHOT with netty-tcnative 2.0.0.Beta6

First and only time I've seen it so far. Happened on a H2 connection.

2017-02-27 21:50:45,339 [WorkerThread-0] AbstractChannelHandlerContext WARN : Failed to mark a promise as failure because it has succeeded already: DefaultChannelPromise@7c0ddec1(success)
java.lang.Exception: bio is null
	at io.netty.internal.tcnative.SSL.$$YJP$$bioLengthByteBuffer(Native Method) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.internal.tcnative.SSL.bioLengthByteBuffer(SSL.java) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.wrap(ReferenceCountedOpenSslEngine.java:483) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:509) ~[?:1.8.0_102]
	at io.netty.handler.ssl.SslHandler.wrap(SslHandler.java:836) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.wrap(SslHandler.java:659) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.wrapAndFlush(SslHandler.java:631) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.flush(SslHandler.java:612) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.flush(SslHandler.java:1441) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.closeOutboundAndChannel(SslHandler.java:1424) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.close(SslHandler.java:579) ~[netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:624) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:608) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:465) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler.processGoAwayWriteResult(Http2ConnectionHandler.java:851) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler.access$1100(Http2ConnectionHandler.java:66) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler$4.operationComplete(Http2ConnectionHandler.java:777) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler$4.operationComplete(Http2ConnectionHandler.java:774) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:507) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:500) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:479) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:420) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.tryPromise(Http2CodecUtil.java:403) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.trySuccess(Http2CodecUtil.java:369) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2CodecUtil$SimpleChannelPromiseAggregator.trySuccess(Http2CodecUtil.java:281) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:668) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:257) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:337) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:448) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:856) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:823) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1296) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:776) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:768) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:749) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:117) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:776) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:768) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:749) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:117) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:776) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:768) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:749) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.forceFlush(SslHandler.java:1576) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.wrapAndFlush(SslHandler.java:635) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.flush(SslHandler.java:612) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:776) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:768) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:749) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler.onError(Http2ConnectionHandler.java:573) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:355) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:413) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1139) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1045) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at com.squarespace.echo.aaa.bbb.Ccc.channelRead(Ccc.java:56) [echo-abc.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:624) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:559) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:476) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final-SNAPSHOT.jar:4.1.9.Final-SNAPSHOT]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
@rkapsi
Copy link
Member Author

rkapsi commented Feb 27, 2017

Saw that Exception a few more times and it was not limited to H2. We eventually had to do a rollback to 4.1.8 and 1.1.33.Fork26 as we started getting reports of SSL not working correctly.

@rkapsi
Copy link
Member Author

rkapsi commented Feb 28, 2017

A common theme was that SSL connections wouldn't return any data or partial data.

@Scottmitch
Copy link
Member

@rkapsi - Thanks for reporting!

@normanmaurer
Copy link
Member

@rkapsi thanks a lot!

Scottmitch added a commit to Scottmitch/netty that referenced this issue Feb 28, 2017
Motivation:
To ensure that all bytes queued in OpenSSL/tcnative internal buffers we invoke SSL_shutdown again to stimulate OpenSSL to write any pending bytes. If this call fails we may call SSL_free and the associated shutdown method to free resources. At this time we may attempt to use the networkBIO which has already been freed and get a NPE.

Modifications:
- Don't call bioLengthByteBuffer(networkBIO) if we have called shutdown() in ReferenceCountedOpenSslEngine

Result:
Fixes netty#6466
@Scottmitch
Copy link
Member

@rkapsi - Can you verify PR #6467?

Scottmitch added a commit that referenced this issue Feb 28, 2017
Motivation:
To ensure that all bytes queued in OpenSSL/tcnative internal buffers we invoke SSL_shutdown again to stimulate OpenSSL to write any pending bytes. If this call fails we may call SSL_free and the associated shutdown method to free resources. At this time we may attempt to use the networkBIO which has already been freed and get a NPE.

Modifications:
- Don't call bioLengthByteBuffer(networkBIO) if we have called shutdown() in ReferenceCountedOpenSslEngine

Result:
Fixes #6466
@Scottmitch
Copy link
Member

@rkapsi - Please report back if this issue is not fixed, or there are other issues. I merged the PR because it seemed pretty clear what the cause and required fix was.

liuzhengyang pushed a commit to liuzhengyang/netty that referenced this issue Sep 10, 2017
Motivation:
To ensure that all bytes queued in OpenSSL/tcnative internal buffers we invoke SSL_shutdown again to stimulate OpenSSL to write any pending bytes. If this call fails we may call SSL_free and the associated shutdown method to free resources. At this time we may attempt to use the networkBIO which has already been freed and get a NPE.

Modifications:
- Don't call bioLengthByteBuffer(networkBIO) if we have called shutdown() in ReferenceCountedOpenSslEngine

Result:
Fixes netty#6466
kiril-me pushed a commit to kiril-me/netty that referenced this issue Feb 28, 2018
Motivation:
To ensure that all bytes queued in OpenSSL/tcnative internal buffers we invoke SSL_shutdown again to stimulate OpenSSL to write any pending bytes. If this call fails we may call SSL_free and the associated shutdown method to free resources. At this time we may attempt to use the networkBIO which has already been freed and get a NPE.

Modifications:
- Don't call bioLengthByteBuffer(networkBIO) if we have called shutdown() in ReferenceCountedOpenSslEngine

Result:
Fixes netty#6466
pulllock pushed a commit to pulllock/netty that referenced this issue Oct 19, 2023
Motivation:
To ensure that all bytes queued in OpenSSL/tcnative internal buffers we invoke SSL_shutdown again to stimulate OpenSSL to write any pending bytes. If this call fails we may call SSL_free and the associated shutdown method to free resources. At this time we may attempt to use the networkBIO which has already been freed and get a NPE.

Modifications:
- Don't call bioLengthByteBuffer(networkBIO) if we have called shutdown() in ReferenceCountedOpenSslEngine

Result:
Fixes netty#6466
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants