dd-trace-go
dd-trace-go copied to clipboard
ddtrace/tracer: DATA RACE for span Resource `s.Resource`
I have observed a data race in the tracer library, between applyPPROFLabels and setMeta (which is marked not safe for concurrent use):
- Read: https://github.com/DataDog/dd-trace-go/blob/main/ddtrace/tracer/tracer.go#L523
- Write: https://github.com/DataDog/dd-trace-go/blob/main/ddtrace/tracer/span.go#L316
Proposed solution:
Thanks for the report and sorry for the delayed response. I'll investigate. If you have more information on how to reproduce this, please share. I assume you used the -race detector against your test suite?
Ok, my initial attempts to reproduce this by running the related package tests under the -race flag have no yielded any race detector complaints.
I'm leaving this open for now, but will need some more details on how to reproduce this in order to provide a solution.
$ go test -race ./ddtrace/... ./internal/... ./profiler...
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace 0.255s [no tests to run]
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext 0.080s
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace/internal 0.082s
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace/mocktracer 0.280s
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace/opentracer 0.425s
# gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/cmemprof.test
ld: warning: -no_pie is deprecated when targeting new OS versions
ok gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer 28.441s
ok gopkg.in/DataDog/dd-trace-go.v1/internal 0.343s
ok gopkg.in/DataDog/dd-trace-go.v1/internal/appsec 0.488s
ok gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/dyngo 1.241s
? gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/dyngo/instrumentation [no test files]
ok gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/dyngo/instrumentation/grpcsec 0.135s
ok gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/dyngo/instrumentation/httpsec 0.174s
ok gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/waf 0.103s
? gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/waf/include [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/waf/lib/darwin-amd64 [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/waf/lib/linux-amd64 [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig [no test files]
ok gopkg.in/DataDog/dd-trace-go.v1/internal/log 0.130s
? gopkg.in/DataDog/dd-trace-go.v1/internal/osinfo [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/internal/samplernames [no test files]
ok gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry 1.480s
? gopkg.in/DataDog/dd-trace-go.v1/internal/traceprof [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/internal/traceprof/testapp [no test files]
ok gopkg.in/DataDog/dd-trace-go.v1/internal/traceprof/traceproftest 5.007s
ok gopkg.in/DataDog/dd-trace-go.v1/internal/version 0.226s
ok gopkg.in/DataDog/dd-trace-go.v1/profiler 8.564s
ok gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/cmemprof 0.097s
? gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/cmemprof/testallocator [no test files]
? gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/extensions [no test files]
ok gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/immutable 0.113s
ok gopkg.in/DataDog/dd-trace-go.v1/profiler/internal/pprofutils 0.105s