Skip to content

Instantly share code, notes, and snippets.

@bsidhom
Created September 14, 2017 17:44
Show Gist options
  • Save bsidhom/1ab619c842228b78b9a276f87bbaad0b to your computer and use it in GitHub Desktop.
Save bsidhom/1ab619c842228b78b9a276f87bbaad0b to your computer and use it in GitHub Desktop.
jdb session showing SslWrapper reuse after finalizer has run
Script started on Thu 14 Sep 2017 05:34:19 PM UTC
sidhom@sidhom-gcs-m:~$ time jdb -Diterations=10 -Dhttp.keepAlive=true -Dbuffer.size=$((8*1024*1024)) -Dchunk.size=$((100*1024*1024)) -classpath gcsjava-assembly-0.1.0.jar com.google.gcsjava.Main 1G.random.dat
Initializing jdb ...
> catch java.lang.NullPointerException
Deferring all java.lang.NullPointerException.
It will be set after the class is loaded.
> stop in org.conscrypt.SslWrapper.close
Deferring breakpoint org.conscrypt.SslWrapper.close.
It will be set after the class is loaded.
> run
run com.google.gcsjava.Main 1G.random.dat
Set uncaught java.lang.Throwable
Set deferred all java.lang.NullPointerException
Set deferred uncaught java.lang.Throwable
>
VM Started: Set deferred breakpoint org.conscrypt.SslWrapper.close
NATIVE NEW
SslWrapper.newInstance: 139908901314560 (org.conscrypt.SslWrapper@3af9c5b7)
SslWrapper.write: first write: 139908901314560 (org.conscrypt.SslWrapper@3af9c5b7)
Finished iteration 0
NATIVE NEW
SslWrapper.newInstance: 139908901726096 (org.conscrypt.SslWrapper@712625fd)
SslWrapper.write: first write: 139908901726096 (org.conscrypt.SslWrapper@712625fd)
Breakpoint hit: "thread=Finalizer", org.conscrypt.SslWrapper.close(), line=514 bci=0
Finalizer[1] where
[1] org.conscrypt.SslWrapper.close (SslWrapper.java:514)
[2] org.conscrypt.ConscryptFileDescriptorSocket.free (ConscryptFileDescriptorSocket.java:986)
[3] org.conscrypt.ConscryptFileDescriptorSocket.finalize (ConscryptFileDescriptorSocket.java:1,015)
[4] java.lang.System$2.invokeFinalize (System.java:1,270)
[5] java.lang.ref.Finalizer.runFinalizer (Finalizer.java:98)
[6] java.lang.ref.Finalizer.access$100 (Finalizer.java:34)
[7] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:210)
Finalizer[1] print this
this = "org.conscrypt.SslWrapper@3af9c5b7"
Finalizer[1] cont
> SslWrapper.close: 139908901314560 (org.conscrypt.SslWrapper@3af9c5b7)
SslWrapper.write: write after close: 0 (org.conscrypt.SslWrapper@3af9c5b7)
ssl == null == 0
Exception occurred: java.lang.NullPointerException (to be caught at: org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write(), line=625 bci=160)"thread=main", org.conscrypt.SslWrapper.write(), line=394 bci=132
main[1] where
[1] org.conscrypt.SslWrapper.write (SslWrapper.java:394)
[2] org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write (ConscryptFileDescriptorSocket.java:617)
[3] java.io.BufferedOutputStream.flushBuffer (BufferedOutputStream.java:82)
[4] java.io.BufferedOutputStream.flush (BufferedOutputStream.java:140)
[5] java.io.PrintStream.flush (PrintStream.java:338)
[6] sun.net.www.MessageHeader.print (MessageHeader.java:301)
[7] sun.net.www.http.HttpClient.writeRequests (HttpClient.java:644)
[8] sun.net.www.http.HttpClient.writeRequests (HttpClient.java:655)
[9] sun.net.www.protocol.http.HttpURLConnection.writeRequests (HttpURLConnection.java:693)
[10] sun.net.www.protocol.http.HttpURLConnection.getOutputStream0 (HttpURLConnection.java:1,326)
[11] sun.net.www.protocol.http.HttpURLConnection.getOutputStream (HttpURLConnection.java:1,291)
[12] sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java:250)
[13] com.google.api.client.http.javanet.NetHttpRequest.execute (NetHttpRequest.java:77)
[14] com.google.api.client.http.HttpRequest.execute (HttpRequest.java:981)
[15] com.google.cloud.storage.spi.v1.HttpStorageRpc.write (HttpStorageRpc.java:562)
[16] com.google.cloud.storage.BlobWriteChannel$1.run (BlobWriteChannel.java:51)
[17] java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
[18] com.google.api.gax.retrying.DirectRetryingExecutor.submit (DirectRetryingExecutor.java:94)
[19] com.google.cloud.RetryHelper.runWithRetries (RetryHelper.java:54)
[20] com.google.cloud.storage.BlobWriteChannel.flushBuffer (BlobWriteChannel.java:47)
[21] com.google.cloud.BaseWriteChannel.flush (BaseWriteChannel.java:121)
[22] com.google.cloud.BaseWriteChannel.write (BaseWriteChannel.java:148)
[23] com.google.gcsjava.Main.main (Main.java:45)
main[1] print this
this = "org.conscrypt.SslWrapper@3af9c5b7"
main[1] dump this
this = {
parameters: instance of org.conscrypt.SSLParametersImpl(id=1847)
handshakeCallbacks: instance of org.conscrypt.ConscryptFileDescriptorSocket(id=1848)
aliasChooser: instance of org.conscrypt.ConscryptFileDescriptorSocket(id=1848)
pskCallbacks: instance of org.conscrypt.ConscryptFileDescriptorSocket(id=1848)
localCertificates: null
ssl: 0
firstWrite: false
}
main[1] cont
>
Exception occurred: java.lang.NullPointerException (to be caught at: java.io.PrintStream.flush(), line=343 bci=29)"thread=main", org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write(), line=625 bci=167
main[1] where
[1] org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write (ConscryptFileDescriptorSocket.java:625)
[2] java.io.BufferedOutputStream.flushBuffer (BufferedOutputStream.java:82)
[3] java.io.BufferedOutputStream.flush (BufferedOutputStream.java:140)
[4] java.io.PrintStream.flush (PrintStream.java:338)
[5] sun.net.www.MessageHeader.print (MessageHeader.java:301)
[6] sun.net.www.http.HttpClient.writeRequests (HttpClient.java:644)
[7] sun.net.www.http.HttpClient.writeRequests (HttpClient.java:655)
[8] sun.net.www.protocol.http.HttpURLConnection.writeRequests (HttpURLConnection.java:693)
[9] sun.net.www.protocol.http.HttpURLConnection.getOutputStream0 (HttpURLConnection.java:1,326)
[10] sun.net.www.protocol.http.HttpURLConnection.getOutputStream (HttpURLConnection.java:1,291)
[11] sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java:250)
[12] com.google.api.client.http.javanet.NetHttpRequest.execute (NetHttpRequest.java:77)
[13] com.google.api.client.http.HttpRequest.execute (HttpRequest.java:981)
[14] com.google.cloud.storage.spi.v1.HttpStorageRpc.write (HttpStorageRpc.java:562)
[15] com.google.cloud.storage.BlobWriteChannel$1.run (BlobWriteChannel.java:51)
[16] java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
[17] com.google.api.gax.retrying.DirectRetryingExecutor.submit (DirectRetryingExecutor.java:94)
[18] com.google.cloud.RetryHelper.runWithRetries (RetryHelper.java:54)
[19] com.google.cloud.storage.BlobWriteChannel.flushBuffer (BlobWriteChannel.java:47)
[20] com.google.cloud.BaseWriteChannel.flush (BaseWriteChannel.java:121)
[21] com.google.cloud.BaseWriteChannel.write (BaseWriteChannel.java:148)
[22] com.google.gcsjava.Main.main (Main.java:45)
main[1] print this
this = "org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream@742ff096"
main[1] dump this
this = {
writeLock: instance of java.lang.Object(id=1851)
this$0: instance of org.conscrypt.ConscryptFileDescriptorSocket(id=1848)
}
main[1] cont
>
Breakpoint hit: "thread=Keep-Alive-Timer", org.conscrypt.SslWrapper.close(), line=514 bci=0
Keep-Alive-Timer[1] where
[1] org.conscrypt.SslWrapper.close (SslWrapper.java:514)
[2] org.conscrypt.ConscryptFileDescriptorSocket.free (ConscryptFileDescriptorSocket.java:986)
[3] org.conscrypt.ConscryptFileDescriptorSocket.shutdownAndFreeSslNative (ConscryptFileDescriptorSocket.java:975)
[4] org.conscrypt.ConscryptFileDescriptorSocket.close (ConscryptFileDescriptorSocket.java:960)
[5] sun.net.www.http.HttpClient.closeServer (HttpClient.java:1,053)
[6] sun.net.www.http.KeepAliveCache.run (KeepAliveCache.java:199)
[7] java.lang.Thread.run (Thread.java:748)
Keep-Alive-Timer[1] print this
Exception occurred: java.lang.NullPointerException (to be caught at: sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(), line=1,355 bci=321)"thread=main", java.io.PrintStream.flush(), line=343 bci=33
main[1] cont
> this = "org.conscrypt.SslWrapper@712625fd"
Keep-Alive-Timer[1] cont
>
Exception occurred: java.lang.NullPointerException (to be caught at: com.google.api.gax.retrying.DirectRetryingExecutor.submit(), line=99 bci=81)"thread=main", sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(), line=1,357 bci=327
main[1] cont
> SslWrapper.close: 139908901726096 (org.conscrypt.SslWrapper@712625fd)
NATIVE NEW
SslWrapper.newInstance: 139908901726096 (org.conscrypt.SslWrapper@5afa3c9)
SslWrapper.write: first write: 139908901726096 (org.conscrypt.SslWrapper@5afa3c9)
Exception occurred: com.google.cloud.storage.StorageException (uncaught)"thread=main", com.google.gcsjava.Main.main(), line=49 bci=404
main[1] cont
Exception in thread "main" com.google.cloud.storage.StorageException: java.lang.NullPointerException: ssl == null
at com.google.cloud.storage.StorageException.translateAndThrow(StorageException.java:71)
at com.google.cloud.storage.BlobWriteChannel.flushBuffer(BlobWriteChannel.java:55)
at com.google.cloud.BaseWriteChannel.flush(BaseWriteChannel.java:121)
at com.google.cloud.BaseWriteChannel.write(BaseWriteChannel.java:148)
at com.google.gcsjava.Main.main(Main.java:45)
Caused by: java.lang.NullPointerException: ssl == null
at org.conscrypt.NativeCrypto.SSL_write(Native Method)
at org.conscrypt.SslWrapper.write(SslWrapper.java:394)
at org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write(ConscryptFileDescriptorSocket.java:617)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.PrintStream.flush(PrintStream.java:338)
at sun.net.www.MessageHeader.print(MessageHeader.java:301)
at sun.net.www.http.HttpClient.writeRequests(HttpClient.java:644)
at sun.net.www.http.HttpClient.writeRequests(HttpClient.java:655)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:693)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1326)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1291)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.cloud.storage.spi.v1.HttpStorageRpc.write(HttpStorageRpc.java:562)
at com.google.cloud.storage.BlobWriteChannel$1.run(BlobWriteChannel.jav> a:51)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:94)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:54)
at com.google.cloud.storage.BlobWriteChannel.flushBuffer(BlobWriteChannel.java:47)
... 3 more
The application exited
real 1m36.307s
user 0m4.692s
sys 0m2.636s
sidhom@sidhom-gcs-m:~$ exit
exit
Script done on Thu 14 Sep 2017 05:36:04 PM UTC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment