fix(amino): stack overflow with TypeInfo.String #1180
Draft
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.
The PR just demonstrates the bug, I didn't find the fix yet
Add a test that demonstrates a bug when the underlying type represented by
TypeInfo
has fields of the same type:TypeInfo.String()
triggers a stack overflow because the codec reuses the sameTypeInfo
instance when affecting the masterTypeInfo.Fields
.This happens when
cdc.fullnameToTypeInfo
is printed (in case of error for instance see codec.go:535), causing all registeredTypeInfo
to be printed too, which calls theirString()
method.Example of type that can triggers this issue:
tm2/pkg/crypto/merkle.SimpleProofNode
This is partly fixed by #1179, but ideally stack overflow should be fixed inside
TypeInfo.String()
.Contributors' checklist...
BREAKING CHANGE: xxx
message was included in the description