Suppress stack-trace filling of ShortBufferException #849
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is about modifying Conscrypt to throw
ShortBufferWithoutStackTraceException
instead ofShortBufferException
for the purpose of not wasting cpu-time filling in a stack trace which isn't used actually.This is particularity problematic on Java 8 because it has a bug to throw an excessive number of ShortBufferExceptions, which was fixed on Java 11 by JDK-8178374 and will be included in future OpenJDK 8. But this still be valuable for those who have to use OpenJDK8 252 or older.
The bottom screenshot was taken from my gRPC Java benchmark and it was wasting up to 9% cpu-time just calling
fillInStackTrace
.With this PR, this unnecessary code path can be removed. Note that this is sort-of implementation detail of CipherSpi and stripping the stack trace from
ShortBufferException
doesn't hurt the usability of Conscrypt.