Fix random "UTF8 string too large" exception in ScalaSigAnnotationVisitor #24
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 PR fixes random "UTF8 string too large" exception during shading, which I encountered in my closed source project. This exception is very hard to reproduce because it occurs during processing classes that have
ScalaLongSignature
annotation and annotation value should have zero bytes in certain places, which is not deterministic. The cause of this bug isnextChunk
function inScalaSigAnnotationVisitor
class which can produce chunks equal to65536
bytes breakingorg.objectweb.asm.ByteVector#putUTF8
. Stack trace for exception is following:This PR extracts
nextChunk
to standalone function, fixes the bug and adds a test for it. Unfortunately cannot include actual class causing error because it is from closed source project and there is no deterministic way to recreate it.