-
Notifications
You must be signed in to change notification settings - Fork 183
Closed
Description
There's some data race with protoparse.Parser.ParseFiles:
Note: I'm using two completely separately instantiated protoparse.Parsers, ie I'm not even using the same protoparse.Parser across threads, so it has to be something global.
Here's two traces. Both of these were done by compiling https://github.com/googleapis/googleapis on a per-directory basis, that is I call ParseFiles for the files in each directory using a separate protoparse.Parser on a separate thread.
Thoughts:
- Maybe something to do with the globals, I don't know what but it has to do with modifying
*DescriptorProtoobjects so maybe one of the caches? Assumedly this concerns imports since I'm not callingParseFilesdirectly on the same file at any time. - Maybe something to do with the well-known types?
WARNING: DATA RACE
Read at 0x00c0077de7b0 by goroutine 151:
github.com/jhump/protoreflect/desc.(*FieldDescriptor).resolve()
/go/pkg/mod/github.com/golang/protobuf@v1.3.2/protoc-gen-go/descriptor/descriptor.pb.go:887 +0xb29
github.com/jhump/protoreflect/desc.(*MessageDescriptor).resolve()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/descriptor.go:326 +0x73b
github.com/jhump/protoreflect/desc.(*MessageDescriptor).resolve()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/descriptor.go:316 +0x38b
github.com/jhump/protoreflect/desc.createFileDescriptor()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/convert.go:88 +0x1c3b
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFile()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/convert.go:19 +0x647
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFile()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:640 +0x514
github.com/jhump/protoreflect/desc/protoparse.(*linker).createdLinkedDescriptors()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:602 +0x34e
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:49 +0x98
github.com/jhump/protoreflect/desc/protoparse.Parser.ParseFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/parser.go:183 +0x17d
Previous write at 0x00c0077de7b0 by goroutine 53:
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveFieldTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:381 +0xed5
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:303 +0x651
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:293 +0x3b1
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveReferences()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:239 +0x1af
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:40 +0x74
github.com/jhump/protoreflect/desc/protoparse.Parser.ParseFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/parser.go:183 +0x17d
WARNING: DATA RACE
Read at 0x00c00776e4e0 by goroutine 50:
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveFieldTypes()
/go/pkg/mod/github.com/golang/protobuf@v1.3.2/protoc-gen-go/descriptor/descriptor.pb.go:887 +0x157b
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:303 +0x651
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:293 +0x3b1
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveReferences()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:239 +0x1af
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:40 +0x74
github.com/jhump/protoreflect/desc/protoparse.Parser.ParseFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/parser.go:183 +0x17d
Previous write at 0x00c00776e4e0 by goroutine 73:
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveFieldTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:381 +0xed5
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:303 +0x651
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveMessageTypes()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:293 +0x3b1
github.com/jhump/protoreflect/desc/protoparse.(*linker).resolveReferences()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:239 +0x1af
github.com/jhump/protoreflect/desc/protoparse.(*linker).linkFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/linker.go:40 +0x74
github.com/jhump/protoreflect/desc/protoparse.Parser.ParseFiles()
/go/pkg/mod/github.com/jhump/protoreflect@v1.4.5-0.20190717021903-efa672cbb5ff/desc/protoparse/parser.go:183 +0x17d
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels