diff --git a/CHANGELOG.md b/CHANGELOG.md index 27fff26e3..f45ab0a30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ OpenTelemetry Go Automatic Instrumentation adheres to [Semantic Versioning](http - Support `golang.org/x/net` `0.34.0`. ([#1552](https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/1552)) - Support `google.golang.org/grpc` `1.71.0-dev`. ([#1467](https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/1467)) +### Changed + +- Preemptively drop support for the `traceglobal` probe when `Go >= 1.24` is used. ([#1573](https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/1573)) + ## [v0.19.0-alpha] - 2024-12-05 ### Added diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md index 87bd6e0e7..71078970f 100644 --- a/COMPATIBILITY.md +++ b/COMPATIBILITY.md @@ -9,7 +9,11 @@ Supported versions of [`otel`]: - `v0.14.0` to `v1.33.0` +**Note**: Versions of `go.opentelemetry.io/otel < v1.33.0` are not supported +when using Go >= `1.24`. See [this issue] for details. + [`otel`]: https://pkg.go.dev/go.opentelemetry.io/otel +[this issue]: https://github.com/open-telemetry/opentelemetry-go-instrumentation/issues/1318 ## Instrumented Library Compatibility diff --git a/internal/pkg/instrumentation/bpf/go.opentelemetry.io/otel/traceglobal/probe.go b/internal/pkg/instrumentation/bpf/go.opentelemetry.io/otel/traceglobal/probe.go index e8da60e6a..780ae4cc0 100644 --- a/internal/pkg/instrumentation/bpf/go.opentelemetry.io/otel/traceglobal/probe.go +++ b/internal/pkg/instrumentation/bpf/go.opentelemetry.io/otel/traceglobal/probe.go @@ -39,6 +39,7 @@ const ( // Minimum version of go.opentelemetry.io/otel that supports using the // go.opentelemetry.io/auto/sdk in the global API. minAutoSDK = "1.33.0" + minGoMaps = "1.24.0" ) var ( @@ -56,6 +57,14 @@ var ( ), FailureMode: probe.FailureModeIgnore, } + goWithoutSwissMaps = probe.PackageConstrainst{ + Package: "std", + Constraints: version.MustConstraints( + version.NewConstraint(fmt.Sprintf("< %s", minGoMaps)), + ), + // Warn in logs that this is not supported. + FailureMode: probe.FailureModeWarn, + } ) // New returns a new [probe.Probe]. @@ -151,6 +160,7 @@ func New(logger *slog.Logger) probe.Probe { ReturnProbe: "uprobe_Start_Returns", PackageConstrainsts: []probe.PackageConstrainst{ otelWithoutAutoSDK, + goWithoutSwissMaps, }, }, { @@ -158,6 +168,7 @@ func New(logger *slog.Logger) probe.Probe { EntryProbe: "uprobe_End", PackageConstrainsts: []probe.PackageConstrainst{ otelWithoutAutoSDK, + goWithoutSwissMaps, }, }, { @@ -166,6 +177,7 @@ func New(logger *slog.Logger) probe.Probe { FailureMode: probe.FailureModeIgnore, PackageConstrainsts: []probe.PackageConstrainst{ otelWithoutAutoSDK, + goWithoutSwissMaps, }, }, { @@ -174,6 +186,7 @@ func New(logger *slog.Logger) probe.Probe { FailureMode: probe.FailureModeIgnore, PackageConstrainsts: []probe.PackageConstrainst{ otelWithoutAutoSDK, + goWithoutSwissMaps, }, }, { @@ -182,6 +195,7 @@ func New(logger *slog.Logger) probe.Probe { FailureMode: probe.FailureModeIgnore, PackageConstrainsts: []probe.PackageConstrainst{ otelWithoutAutoSDK, + goWithoutSwissMaps, }, }, },