Hello,


    I've got a wired issue working with protobuf/golang. I have a proto 
defined a enum like

enum OSType {

    UNKNOWN_OSTYPE = 0;

    MACOS          = 1;

    IOS            = 2;

    ANDROID        = 3;

    WINDOWS        = 4;

}

in fileA,  then import it and use it in a object in fileB


import fileA

...

message SomeObj {

    ... 

    repeated OSType platforms = 10;

    ...

}


    then generate into some go files. When I use it as a return value of, I 
find the panic, whatever I put a nil, empty array, or an array of several 
OSTypes(non-duplicated).

    Debug into the code and find it's related to this enum array - in this 
object I have several other enums but none of them cause any problem. 
What's more, if I move this enum array out of FileA, the panic disappeared 
immediately.

    The panic reads like[1]. Also I'm using Kite framework, not sure if it 
is related.


    I am not sure if this is a mis-use or bug? Though I've got a 
workaround, looking forwards some insight and best-practice. Thanks.


[1]

[2020-05-22T21:03:55+08:00] catch panic!!! panic location: 
google.golang.org/protobuf/internal/filedesc.(*EnumValues).Get:66

stacktrace:

goroutine 4447 [running]:

runtime/debug.Stack(0xc001836528, 0x31e87a0, 0xc000456c30)

        /usr/local/go/src/runtime/debug/stack.go:24 +0x9d

git.purefire.org/package/common.Recover(0x3267540, 0xc001d580c0, 
0xc000c6c9c8)

        
/Users/purefire/go/pkg/mod/git.purefire.org/package/common@v1.0.322/common.go:213
 
+0x16e

panic(0x2b9ec00, 0xc0008ab7c0)

        /usr/local/go/src/runtime/panic.go:679 +0x1b2

google.golang.org/protobuf/internal/filedesc.(*EnumValues).Get(0xc0000f01c0, 
0x0, 0xc0000f01c0, 0x101008b)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/filedesc/desc_list_gen.go:66
 
+0x4b

google.golang.org/protobuf/internal/impl.newEnumConverter(0x32859e0, 
0x2a2c6a0, 0x32858c0, 0xc000264d60, 0x29bb7c0, 0xc0018993e0)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/convert.go:379
 
+0x85

google.golang.org/protobuf/internal/impl.newSingularConverter(0x32859e0, 
0x2a2c6a0, 0x32858c0, 0xc000264d60, 0xc000c6bb60, 0x116987b)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/convert.go:138
 
+0xefa

google.golang.org/protobuf/internal/impl.newListConverter(0x32859e0, 
0xc0001e8ac0, 0x32858c0, 0xc000264d60, 0xe0, 0x2b12f60)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/convert_list.go:17
 
+0xae

google.golang.org/protobuf/internal/impl.NewConverter(0x32859e0, 
0xc0001e8ac0, 0x32858c0, 0xc000264d60, 0xc000c6bc18, 0x1016587)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/convert.go:56
 
+0x123

google.golang.org/protobuf/internal/impl.fieldInfoForList(0x32858c0, 
0xc000264d60, 0x29f3e60, 0x9, 0x0, 0x0, 0x32859e0, 0x290fa00, 0x29f3e6b, 
0x4e, ...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect_field.go:172
 
+0xe1

google.golang.org/protobuf/internal/impl.(*MessageInfo).makeKnownFieldsFunc(0xc000d9a140,
 
0xffffffffffffffff, 0xffffffffffffffff, 0x80, 0xffffffffffffffff, 
0xc001fb7ad0, 0xc001fb7b00, 0xc001fb7b30, 0xc001fb7b60)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect.go:61
 
+0x673

google.golang.org/protobuf/internal/impl.(*MessageInfo).makeReflectFuncs(0xc000d9a140,
 
0x32859e0, 0x2d16600, 0xffffffffffffffff, 0xffffffffffffffff, 0x80, 
0xffffffffffffffff, 0xc001fb7ad0, 0xc001fb7b00, 0xc001fb7b30, ...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect.go:36
 
+0x63

google.golang.org/protobuf/internal/impl.(*MessageInfo).initOnce(0xc000d9a140)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message.go:90
 
+0x19c

google.golang.org/protobuf/internal/impl.(*MessageInfo).init(0xc000d9a140)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message.go:72
 
+0x3c

google.golang.org/protobuf/internal/impl.(*messageReflectWrapper).ProtoMethods(0xc0004563d0,
 
0x120804b)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/message_reflect_gen.go:150
 
+0x2f

google.golang.org/protobuf/proto.protoMethods(...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/proto_methods.go:18

google.golang.org/protobuf/proto.sizeMessage(0x327da60, 0xc0004563d0, 
0xc0004563d0)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/size.go:30 
+0x35

google.golang.org/protobuf/proto.MarshalOptions.Size(0x2000000, 0x31e9c80, 
0xc0004563d0, 0x31e9c80)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/size.go:26 
+0x4e

google.golang.org/protobuf/proto.Size(...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/size.go:16

google.golang.org/protobuf/internal/impl.sizeMessageSlice(0xc001fb7a70, 
0x32859e0, 0x2cbdf40, 0x1, 0x2d43700, 0x2ad9e00)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/codec_field.go:526
 
+0xbb

google.golang.org/protobuf/internal/impl.makeMessageSliceFieldCoder.func1(0xc001fb7a70,
 
0xc00191ac60, 0x2e4800, 0x2ad9e00)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/codec_field.go:452
 
+0x54

google.golang.org/protobuf/internal/impl.(*MessageInfo).sizePointerSlow(0xc000d9a3c0,
 
0xc001fb7a70, 0x5054d00, 0x0)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/encode.go:79
 
+0xbe

google.golang.org/protobuf/internal/impl.(*MessageInfo).sizePointer(0xc000d9a3c0,
 
0xc001fb7a70, 0x2ad9e00, 0xc001fb7a70)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/encode.go:56
 
+0x7

google.golang.org/protobuf/internal/impl.(*MessageInfo).size(0xc000d9a3c0, 
0x327da60, 0xc000456380, 0x1208100, 0xc000d9a3c0)

       
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/internal/impl/encode.go:40
 
+0x55

google.golang.org/protobuf/proto.MarshalOptions.marshal(0xc000000001, 0x0, 
0x0, 0x0, 0x327da60, 0xc000456380, 0xc000456380, 0x327da60, 0xc000456380, 
0x2ad9e00, ...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/encode.go:153
 
+0x2f6

google.golang.org/protobuf/proto.MarshalOptions.MarshalAppend(0x2000001, 
0x0, 0x0, 0x0, 0x31e9c80, 0xc000456380, 0x29dfa40, 0x300db40, 0x2a934e0, 
0xc0023eb260, ...)

        
/Users/purefire/go/pkg/mod/google.golang.org/protobuf@v1.23.0/proto/encode.go:125
 
+0x98

github.com/golang/protobuf/proto.marshalAppend(0x0, 0x0, 0x0, 0x324fa80, 
0xc001fb7a70, 0x324fa00, 0xc001fb7a70, 0x0, 0x0, 0x0, ...)

        
/Users/purefire/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/wire.go:40 
+0xbe

github.com/golang/protobuf/proto.Marshal(...)

        
/Users/purefire/go/pkg/mod/github.com/golang/protobuf@v1.4.2/proto/wire.go:23

...


-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/ac3892c3-210a-4f68-903e-edd9824ad013%40googlegroups.com.

Reply via email to