Skip to content

Commit

Permalink
chore: stop recursive loop in TypeInfo error print
Browse files Browse the repository at this point in the history
Fix the second issue in gnolang#1197

- Before fix, if a Amino type was not imported as registered Amino package, we got stack overflow 

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc02050c458 stack=[0xc02050c000, 0xc04050c000]
fatal error: stack overflow

- After fix, if a Amino type was not imported as registered Amino package, we could print the message to verify what has been imported for debugging purpose

Error: unable to unmarshal with amino, unmarshal to std.Tx failed after 17 bytes (error reading slice contents: unrecognized concrete type full name vm.m_call of map[abci.BlockParams:TypeInfo{Type:abci.BlockParams,Registered:true,PointerPreferred:false,TypeURL:"/abci.BlockParams",ReprType:,Fields:[]amino.FieldInfo{amino.FieldInfo{Type:(*reflect.rtype)(0x104cfc920), TypeInfo:(*amino.TypeInfo)(0x1400011c6e0), Name:"MaxTxBytes", Index:0, ........
  • Loading branch information
piux2 authored Oct 10, 2023
1 parent fa8eb77 commit 880a6a2
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions tm2/pkg/amino/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (info *TypeInfo) String() string {
buf.Write([]byte(fmt.Sprintf("ReprType:\"%v\",", info.ReprType)))
}
if info.Type.Kind() == reflect.Struct {
buf.Write([]byte(fmt.Sprintf("Fields:%v,", info.Fields)))
buf.Write([]byte(fmt.Sprintf("Fields:%#v,", info.Fields)))
}
buf.Write([]byte("}"))
return buf.String()
Expand Down Expand Up @@ -532,7 +532,11 @@ func (cdc *Codec) getTypeInfoFromFullnameRLock(fullname string, fopts FieldOptio

info, ok := cdc.fullnameToTypeInfo[fullname]
if !ok {
err = fmt.Errorf("amino: unrecognized concrete type full name %s", fullname)
if printLog {
err = fmt.Printf("unrecognized concrete type full name %s of %v", fullname, cdc.fullnameToTypeInfo)
}else{
err = fmt.Errorf("amino: unrecognized concrete type full name %s", fullname)
}
cdc.mtx.RUnlock()
return
}
Expand Down

0 comments on commit 880a6a2

Please sign in to comment.