diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ea2dfb1e7..ead66d4b5 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -28,7 +28,7 @@ jobs: uses: ./.github/workflows/env - name: Initialize CodeQL - uses: github/codeql-action/init@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.8 + uses: github/codeql-action/init@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.11 with: languages: go @@ -37,7 +37,7 @@ jobs: make TARGET_ARCH=${{ matrix.target_arch }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.8 + uses: github/codeql-action/analyze@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.11 with: category: "/language:Go" timeout-minutes: 10 diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml index 7a65b6844..7b95bbfeb 100644 --- a/.github/workflows/ossf-scorecard.yml +++ b/.github/workflows/ossf-scorecard.yml @@ -42,6 +42,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.8 + uses: github/codeql-action/upload-sarif@3c3833e0f8c1c83d449a7478aa59c036a9165498 # v3.29.11 with: sarif_file: results.sarif diff --git a/.github/workflows/unit-test-on-pull-request.yml b/.github/workflows/unit-test-on-pull-request.yml index 275502164..65e1f36d5 100644 --- a/.github/workflows/unit-test-on-pull-request.yml +++ b/.github/workflows/unit-test-on-pull-request.yml @@ -179,19 +179,12 @@ jobs: - { target_arch: amd64, kernel: 6.8.10 } - { target_arch: amd64, kernel: 6.9.1 } - { target_arch: amd64, kernel: 6.12.16 } - # include a kernel that has 4540aed51b12bc13364149bf95f6ecef013197c0 - # (see https://github.com/parca-dev/opentelemetry-ebpf-profiler/pull/201) - - { target_arch: amd64, kernel: 6.12.63 } - - { target_arch: amd64, kernel: 6.16 } # ARM64 (NOTE: older ARM64 kernels are not available in Cilium repos) - { target_arch: arm64, kernel: 6.6.31 } - { target_arch: arm64, kernel: 6.8.4 } - { target_arch: arm64, kernel: 6.9.1 } - { target_arch: arm64, kernel: 6.12.16 } - # qemu has a bug that prevents booting the following kernel on ARM, - # fixed in qemu 9.2 - #- { target_arch: arm64, kernel: 6.16 } steps: - name: Clone code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 @@ -224,30 +217,6 @@ jobs: *) echo >&2 "bug: bad arch selected"; exit 1;; esac support/run-tests.sh ${{ matrix.kernel }} - interpreter-integration-tests: - name: Interpreter integration (${{ matrix.target_arch }}, ${{ matrix.test_type }}) - runs-on: ubuntu-24.04 - strategy: - matrix: - target_arch: [amd64, arm64] - test_type: [stable, known-failing] - steps: - - name: Clone code - uses: actions/checkout@v4 - - name: Set up environment - uses: ./.github/workflows/env - - name: Test interpreter integration (stable tests) - if: matrix.test_type == 'stable' - run: | - uname -a - sudo go test ./interpreter/... -v -run TestIntegration -skip "TestIntegration/(node-local-nightly|node-latest)" - - name: Test interpreter integration (known failing tests) - if: matrix.test_type == 'known-failing' - continue-on-error: true - run: | - uname -a - sudo go test ./interpreter/... -v -run "TestIntegration/(node-local-nightly|node-latest)" - distro-qemu-tests: name: Distro QEMU tests (${{ matrix.kernel }} ${{ matrix.target_arch }}) runs-on: ubuntu-24.04 @@ -263,9 +232,6 @@ jobs: - { target_arch: amd64, kernel: 6.8.10 } - { target_arch: amd64, kernel: 6.9.1 } - { target_arch: amd64, kernel: 6.12.16 } - # include a kernel that has 4540aed51b12bc13364149bf95f6ecef013197c0 - # (see https://github.com/parca-dev/opentelemetry-ebpf-profiler/pull/201) - - { target_arch: amd64, kernel: 6.12.63 } - { target_arch: amd64, kernel: 6.16 } # ARM64 (NOTE: older ARM64 kernels are not available in Cilium repos) diff --git a/go.mod b/go.mod index 31c4bfc7c..0f1304a3c 100644 --- a/go.mod +++ b/go.mod @@ -3,25 +3,22 @@ module go.opentelemetry.io/ebpf-profiler go 1.24.6 require ( - github.com/aws/aws-sdk-go-v2 v1.39.3 - github.com/aws/aws-sdk-go-v2/config v1.31.14 - github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6 + github.com/aws/aws-sdk-go-v2 v1.38.1 + github.com/aws/aws-sdk-go-v2/config v1.31.3 + github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1 github.com/cespare/xxhash/v2 v2.3.0 github.com/cilium/ebpf v0.19.0 - github.com/coreos/pkg v0.0.0-20240122114842-bbd7aa9bf6fb github.com/docker/go-connections v0.6.0 github.com/elastic/go-freelru v0.16.0 github.com/elastic/go-perf v0.0.0-20241029065020-30bec95324b8 github.com/google/uuid v1.6.0 - github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b github.com/klauspost/compress v1.18.0 github.com/mdlayher/kobject v0.0.0-20200520190114-19ca17470d7d github.com/minio/sha256-simd v1.0.1 - github.com/parca-dev/oomprof v0.1.6 github.com/peterbourgon/ff/v3 v3.4.0 github.com/sirupsen/logrus v1.9.3 github.com/stretchr/testify v1.11.1 - github.com/testcontainers/testcontainers-go v0.39.0 + github.com/testcontainers/testcontainers-go v0.40.0 github.com/tklauser/numcpus v0.10.0 github.com/zeebo/xxh3 v1.0.2 go.opentelemetry.io/collector/component v1.39.0 @@ -32,44 +29,45 @@ require ( go.opentelemetry.io/collector/receiver v1.39.0 go.opentelemetry.io/collector/receiver/receivertest v0.133.0 go.opentelemetry.io/collector/receiver/xreceiver v0.133.0 - go.opentelemetry.io/otel v1.37.0 - go.opentelemetry.io/otel/metric v1.37.0 + go.opentelemetry.io/otel v1.39.0 + go.opentelemetry.io/otel/metric v1.39.0 golang.org/x/arch v0.20.0 - golang.org/x/exp v0.0.0-20250811191247-51f88131bc50 - golang.org/x/mod v0.27.0 - golang.org/x/sync v0.16.0 - golang.org/x/sys v0.36.0 - google.golang.org/grpc v1.75.0 + golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b + golang.org/x/mod v0.28.0 + golang.org/x/sync v0.17.0 + golang.org/x/sys v0.39.0 + google.golang.org/grpc v1.75.1 ) require ( dario.cat/mergo v1.0.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.18.18 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.29.7 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.38.8 // indirect - github.com/aws/smithy-go v1.23.1 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.7 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 // indirect + github.com/aws/smithy-go v1.22.5 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect + github.com/coreos/pkg v0.0.0-20240122114842-bbd7aa9bf6fb // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.5.1+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -80,6 +78,7 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/ianlancetaylor/demangle v0.0.0-20251118225945-96ee0021ea0f // indirect github.com/josharian/native v1.1.0 // indirect github.com/jsimonetti/rtnetlink/v2 v2.0.3 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -100,13 +99,14 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/parca-dev/oomprof v0.1.6 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/shirou/gopsutil/v4 v4.25.6 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/component/componenttest v0.133.0 // indirect go.opentelemetry.io/collector/consumer v1.39.0 // indirect go.opentelemetry.io/collector/consumer/consumererror v0.133.0 // indirect @@ -115,18 +115,18 @@ require ( go.opentelemetry.io/collector/pipeline v1.39.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/log v0.13.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/protobuf v1.36.8 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.45.0 // indirect + golang.org/x/text v0.30.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 629816975..49a1369fe 100644 --- a/go.sum +++ b/go.sum @@ -6,50 +6,48 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOEl github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/aws/aws-sdk-go-v2 v1.39.3 h1:h7xSsanJ4EQJXG5iuW4UqgP7qBopLpj84mpkNx3wPjM= -github.com/aws/aws-sdk-go-v2 v1.39.3/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 h1:t9yYsydLYNBk9cJ73rgPhPWqOh/52fcWDQB5b1JsKSY= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2/go.mod h1:IusfVNTmiSN3t4rhxWFaBAqn+mcNdwKtPcV16eYdgko= -github.com/aws/aws-sdk-go-v2/config v1.31.14 h1:kj/KpDqvt0UqcEL3WOvCykE9QUpBb6b23hQdnXe+elo= -github.com/aws/aws-sdk-go-v2/config v1.31.14/go.mod h1:X5PaY6QCzViihn/ru7VxnIamcJQrG9NSeTxuSKm2YtU= -github.com/aws/aws-sdk-go-v2/credentials v1.18.18 h1:5AfxTvDN0AJoA7rg/yEc0sHhl6/B9fZ+NtiQuOjWGQM= -github.com/aws/aws-sdk-go-v2/credentials v1.18.18/go.mod h1:m9mE1mJ1s7zI6rrt7V3RQU2SCgUbNaphlfqEksLp+Fs= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10 h1:UuGVOX48oP4vgQ36oiKmW9RuSeT8jlgQgBFQD+HUiHY= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10/go.mod h1:vM/Ini41PzvudT4YkQyE/+WiQJiQ6jzeDyU8pQKwCac= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10 h1:mj/bdWleWEh81DtpdHKkw41IrS+r3uw1J/VQtbwYYp8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10/go.mod h1:7+oEMxAZWP8gZCyjcm9VicI0M61Sx4DJtcGfKYv2yKQ= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10 h1:wh+/mn57yhUrFtLIxyFPh2RgxgQz/u+Yrf7hiHGHqKY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10/go.mod h1:7zirD+ryp5gitJJ2m1BBux56ai8RIRDykXZrJSp540w= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10 h1:FHw90xCTsofzk6vjU808TSuDtDfOOKPNdz5Weyc3tUI= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10/go.mod h1:n8jdIE/8F3UYkg8O4IGkQpn2qUmapg/1K1yl29/uf/c= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2/go.mod h1:zxwi0DIR0rcRcgdbl7E2MSOvxDyyXGBlScvBkARFaLQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1 h1:ne+eepnDB2Wh5lHKzELgEncIqeVlQ1rSF9fEa4r5I+A= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1/go.mod h1:u0Jkg0L+dcG1ozUq21uFElmpbmjBnhHR5DELHIme4wg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10 h1:DRND0dkCKtJzCj4Xl4OpVbXZgfttY5q712H9Zj7qc/0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10/go.mod h1:tGGNmJKOTernmR2+VJ0fCzQRurcPZj9ut60Zu5Fi6us= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10 h1:DA+Hl5adieRyFvE7pCvBWm3VOZTRexGVkXw33SUqNoY= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10/go.mod h1:L+A89dH3/gr8L4ecrdzuXUYd1znoko6myzndVGZx/DA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6 h1:Hcb4yllr4GTOHC/BKjEklxWhciWMHIqzeCI9oYf1OIk= -github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6/go.mod h1:N/iojY+8bW3MYol9NUMuKimpSbPEur75cuI1SmtonFM= -github.com/aws/aws-sdk-go-v2/service/sso v1.29.7 h1:fspVFg6qMx0svs40YgRmE7LZXh9VRZvTT35PfdQR6FM= -github.com/aws/aws-sdk-go-v2/service/sso v1.29.7/go.mod h1:BQTKL3uMECaLaUV3Zc2L4Qybv8C6BIXjuu1dOPyxTQs= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2 h1:scVnW+NLXasGOhy7HhkdT9AGb6kjgW7fJ5xYkUaqHs0= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2/go.mod h1:FRNCY3zTEWZXBKm2h5UBUPvCVDOecTad9KhynDyGBc0= -github.com/aws/aws-sdk-go-v2/service/sts v1.38.8 h1:xSL4IV19pKDASL2fjWXRfTGmZddPiPPZNPpbv6uZQZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.38.8/go.mod h1:L1xxV3zAdB+qVrVW/pBIrIAnHFWHo6FBbFe4xOGsG/o= -github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M= -github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/aws/aws-sdk-go-v2 v1.38.1 h1:j7sc33amE74Rz0M/PoCpsZQ6OunLqys/m5antM0J+Z8= +github.com/aws/aws-sdk-go-v2 v1.38.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0 h1:6GMWV6CNpA/6fbFHnoAjrv4+LGfyTqZz2LtCHnspgDg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0/go.mod h1:/mXlTIVG9jbxkqDnr5UQNQxW1HRYxeGklkM9vAFeabg= +github.com/aws/aws-sdk-go-v2/config v1.31.3 h1:RIb3yr/+PZ18YYNe6MDiG/3jVoJrPmdoCARwNkMGvco= +github.com/aws/aws-sdk-go-v2/config v1.31.3/go.mod h1:jjgx1n7x0FAKl6TnakqrpkHWWKcX3xfWtdnIJs5K9CE= +github.com/aws/aws-sdk-go-v2/credentials v1.18.7 h1:zqg4OMrKj+t5HlswDApgvAHjxKtlduKS7KicXB+7RLg= +github.com/aws/aws-sdk-go-v2/credentials v1.18.7/go.mod h1:/4M5OidTskkgkv+nCIfC9/tbiQ/c8qTox9QcUDV0cgc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 h1:lpdMwTzmuDLkgW7086jE94HweHCqG+uOJwHf3LZs7T0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4/go.mod h1:9xzb8/SV62W6gHQGC/8rrvgNXU6ZoYM3sAIJCIrXJxY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 h1:IdCLsiiIj5YJ3AFevsewURCPV+YWUlOW8JiPhoAy8vg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4/go.mod h1:l4bdfCD7XyyZA9BolKBo1eLqgaJxl0/x91PL4Yqe0ao= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 h1:j7vjtr1YIssWQOMeOWRbh3z8g2oY/xPjnZH2gLY4sGw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4/go.mod h1:yDmJgqOiH4EA8Hndnv4KwAo8jCGTSnM5ASG1nBI+toA= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4 h1:BE/MNQ86yzTINrfxPPFS86QCBNQeLKY2A0KhDh47+wI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4/go.mod h1:SPBBhkJxjcrzJBc+qY85e83MQ2q3qdra8fghhkkyrJg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4 h1:Beh9oVgtQnBgR4sKKzkUBRQpf1GnL4wt0l4s8h2VCJ0= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4/go.mod h1:b17At0o8inygF+c6FOD3rNyYZufPw62o9XJbSfQPgbo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 h1:ueB2Te0NacDMnaC+68za9jLwkjzxGWm0KB5HTUHjLTI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4/go.mod h1:nLEfLnVMmLvyIG58/6gsSA03F1voKGaCfHV7+lR8S7s= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4 h1:HVSeukL40rHclNcUqVcBwE1YoZhOkoLeBfhUqR3tjIU= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4/go.mod h1:DnbBOv4FlIXHj2/xmrUQYtawRFC9L9ZmQPz+DBc6X5I= +github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1 h1:2n6Pd67eJwAb/5KCX62/8RTU0aFAAW7V5XIGSghiHrw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1/go.mod h1:w5PC+6GHLkvMJKasYGVloB3TduOtROEMqm15HSuIbw4= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 h1:ve9dYBB8CfJGTFqcQ3ZLAAb/KXWgYlgu/2R2TZL2Ko0= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.2/go.mod h1:n9bTZFZcBa9hGGqVz3i/a6+NG0zmZgtkB9qVVFDqPA8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0 h1:Bnr+fXrlrPEoR1MAFrHVsge3M/WoK4n23VNhRM7TPHI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0/go.mod h1:eknndR9rU8UpE/OmFpqU78V1EcXPKFTTm5l/buZYgvM= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 h1:iV1Ko4Em/lkJIsoKyGfc0nQySi+v0Udxr6Igq+y9JZc= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.0/go.mod h1:bEPcjW7IbolPfK67G1nilqWyoxYMSPrDiIQ3RdIdKgo= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= -github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= -github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -58,8 +56,6 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20240122114842-bbd7aa9bf6fb h1:GIzvVQ9UkUlOhSDlqmrQAAAUd6R3E+caIisNEyWXvNE= github.com/coreos/pkg v0.0.0-20240122114842-bbd7aa9bf6fb/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= @@ -71,8 +67,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.5.1+incompatible h1:Bm8DchhSD2J6PsFzxC35TZo4TLGR2PdW/E69rU45NhM= +github.com/docker/docker v28.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -94,8 +90,6 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6 h1:teYtXy9B7y5lHTp8V9KPxpYRAVA7dozigQcMiBust1s= github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6/go.mod h1:p4lGIVX+8Wa6ZPNDvqcxq36XpUDLh42FLetFU7odllI= -github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -112,12 +106,12 @@ github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+H github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b h1:ogbOPx86mIhFy764gGkqnkFC8m5PJA7sPzlk9ppLVQA= -github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/ianlancetaylor/demangle v0.0.0-20251118225945-96ee0021ea0f h1:Fnl4pzx8SR7k7JuzyW8lEtSFH6EQ8xgcypgIn8pcGIE= +github.com/ianlancetaylor/demangle v0.0.0-20251118225945-96ee0021ea0f/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw= @@ -179,8 +173,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/parca-dev/oomprof v0.1.6 h1:potfd09aphNKqsIF54ZsiddTvksVMjQiaKnczFOsVGM= github.com/parca-dev/oomprof v0.1.6/go.mod h1:iqI6XrmiNWOa8m2vEIKo+GtQrqbWCMLFpBWuk8RuAPs= github.com/peterbourgon/ff/v3 v3.4.0 h1:QBvM/rizZM1cB0p0lGMdmR7HxZeI/ZrBWB4DqLkMUBc= @@ -191,8 +183,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs= github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -204,8 +196,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/testcontainers/testcontainers-go v0.39.0 h1:uCUJ5tA+fcxbFAB0uP3pIK3EJ2IjjDUHFSZ1H1UxAts= -github.com/testcontainers/testcontainers-go v0.39.0/go.mod h1:qmHpkG7H5uPf/EvOORKvS6EuDkBUPE3zpVGaH9NL7f8= +github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU= +github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= @@ -219,8 +211,8 @@ github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/component v1.39.0 h1:GJw80zXURBG4h0sh97bPLEn2Ra+NAWUpskaooA0wru4= go.opentelemetry.io/collector/component v1.39.0/go.mod h1:NPaMPTLQuxm5QaaWdqkxYKztC0bRdV+86Q9ir7xS/2k= go.opentelemetry.io/collector/component/componenttest v0.133.0 h1:mg54QqXC+GNqLHa9y6Efh3X5Di4XivjgJr6mzvfVQR8= @@ -255,26 +247,26 @@ go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 h1:FGre0nZh5BSw7G73VpT3xs38H go.opentelemetry.io/contrib/bridges/otelzap v0.12.0/go.mod h1:X2PYPViI2wTPIMIOBjG17KNybTzsrATnvPJ02kkz7LM= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= go.opentelemetry.io/otel/log v0.13.0 h1:yoxRoIZcohB6Xf0lNv9QIyCzQvrtGZklVbdCoyb7dls= go.opentelemetry.io/otel/log v0.13.0/go.mod h1:INKfG4k1O9CL25BaM1qLe0zIedOpvlS5Z7XgSbmN83E= go.opentelemetry.io/otel/log/logtest v0.13.0 h1:xxaIcgoEEtnwdgj6D6Uo9K/Dynz9jqIxSDu2YObJ69Q= go.opentelemetry.io/otel/log/logtest v0.13.0/go.mod h1:+OrkmsAH38b+ygyag1tLjSFMYiES5UHggzrtY1IIEA8= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.opentelemetry.io/proto/slim/otlp v1.7.1 h1:lZ11gEokjIWYM3JWOUrIILr2wcf6RX+rq5SPObV9oyc= go.opentelemetry.io/proto/slim/otlp v1.7.1/go.mod h1:uZ6LJWa49eNM/EXnnvJGTTu8miokU8RQdnO980LJ57g= go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.0.1 h1:Tr/eXq6N7ZFjN+THBF/BtGLUz8dciA7cuzGRsCEkZ88= @@ -292,14 +284,14 @@ golang.org/x/arch v0.20.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= -golang.org/x/exp v0.0.0-20250811191247-51f88131bc50 h1:3yiSh9fhy5/RhCSntf4Sy0Tnx50DmMpQ4MQdKKk4yg4= -golang.org/x/exp v0.0.0-20250811191247-51f88131bc50/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0= +golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -308,13 +300,13 @@ golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM= +golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -330,14 +322,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -350,14 +342,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/interpreter/python/python.go b/interpreter/python/python.go index 4ad3d0d26..8ab517828 100644 --- a/interpreter/python/python.go +++ b/interpreter/python/python.go @@ -710,18 +710,7 @@ func Loader(ebpf interpreter.EbpfHandler, info *interpreter.LoaderInfo) (interpr // Calls first: PyThread_tss_get(autoTSSKey) autoTLSKey, err = decodeStub(ef, pyruntimeAddr, "PyGILState_GetThisThreadState") if autoTLSKey == libpf.SymbolValueInvalid { - // Starting with Python 3.12, PyGILState_GetThisThreadState calls PyThread_tss_is_created - // first before calling PyThread_tss_get. - // On default builds of python (without `--enable-optimizations`, `--with-lto`), the calls - // to PyThread_tss_is_created and PyThread_tss_get are not inlined, so the value of - // autoTLSKey is stored in a register before being passed to both function calls. This - // causes the decode disassembler to not find the value in the call instruction. - // To work around this, we look into PyGILState_Release which as of Python 3.13, - // calls PyThread_tss_get directly. - autoTLSKey, err = decodeStub(ef, pyruntimeAddr, "PyGILState_Release") - } - if autoTLSKey == libpf.SymbolValueInvalid { - return nil, fmt.Errorf("unable to resolve autoTLSKey: %v", err) + return nil, fmt.Errorf("unable to resolve autoTLSKey %v", err) } if version >= pythonVer(3, 7) && autoTLSKey%8 == 0 { // On Python 3.7+, the call is to PyThread_tss_get, but can get optimized to diff --git a/libpf/interpretertype.go b/libpf/interpretertype.go index 0bd8f1adc..d77127cc2 100644 --- a/libpf/interpretertype.go +++ b/libpf/interpretertype.go @@ -79,7 +79,6 @@ var interpreterTypeToString = map[InterpreterType]string{ APMInt: "apm-integration", LuaJIT: "luajit", Go: "go", - GoLabels: "go-labels", CustomLabels: "custom-labels", } diff --git a/libpf/pfelf/file.go b/libpf/pfelf/file.go index ee8d0f711..f4f706e9e 100644 --- a/libpf/pfelf/file.go +++ b/libpf/pfelf/file.go @@ -55,12 +55,6 @@ var ( ErrNotELF = errors.New("not an ELF file") ) -// ErrNoTbss is returned when the tbss section cannot be found -var ErrNoTbss = errors.New("no thread-local uninitialized data section (tbss)") - -// ErrNoTdata is returned when the tdata section cannot be found -var ErrNoTdata = errors.New("no thread-local initialized data section (tdata)") - var ErrNoTLS = errors.New("no TLS program header") // File represents an open ELF file @@ -455,32 +449,6 @@ func (f *File) Section(name string) *Section { return nil } -// Tbss gets the thread-local uninitialized data section -func (f *File) Tbss() (*Section, error) { - if err := f.LoadSections(); err != nil { - return nil, err - } - for _, sec := range f.Sections { - if sec.Type == elf.SHT_NOBITS && sec.Flags&elf.SHF_TLS != 0 { - return &sec, nil - } - } - return nil, ErrNoTbss -} - -// Tdata gets the thread-local initialized data section -func (f *File) Tdata() (*Section, error) { - if err := f.LoadSections(); err != nil { - return nil, err - } - for _, sec := range f.Sections { - if sec.Type == elf.SHT_PROGBITS && sec.Flags&elf.SHF_TLS != 0 { - return &sec, nil - } - } - return nil, ErrNoTdata -} - // TLS gets the TLS segment (program header) func (f *File) TLS() (*Prog, error) { for _, seg := range f.Progs { diff --git a/metrics/ids.go b/metrics/ids.go index 8ec2f5065..fc07bbfbd 100644 --- a/metrics/ids.go +++ b/metrics/ids.go @@ -647,11 +647,11 @@ const ( // Number of failures reading Go custom labels IDUnwindGoLabelsFailures = 279 - // Number of attempts to read Go custom labels (legacy) - IDUnwindGoCustomLabelsAttempts = 280 + // placeholder, will be added in a future PR + IDplaceholder280 = 280 - // Number of failures reading Go custom labels (legacy) - IDUnwindGoCustomLabelsFailures = 281 + // placeholder, will be added in a future PR + IDplaceholder281 = 281 // Number of failures to get TSD base for native custom labels IDUnwindNativeCustomLabelsErrReadTsdBase = 282 diff --git a/metrics/metrics.go b/metrics/metrics.go index 4cb2a4b80..a0a9bebbb 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -48,19 +48,8 @@ var ( metric.WithInstrumentationVersion(vc.Version())) counters = map[MetricID]metric.Int64Counter{} gauges = map[MetricID]metric.Int64Gauge{} - - reporterImpl MetricsReporter ) -// MetricsReporter is the interface for reporting metrics -type MetricsReporter interface { - ReportMetrics(timestamp uint32, ids []uint32, values []int64) -} - -func SetReporter(r MetricsReporter) { - reporterImpl = r -} - func init() { defs := GetDefinitions() metricTypes = make(map[MetricID]MetricType, len(defs)) @@ -98,16 +87,6 @@ func init() { // Allow for report to be overridden in the test. var report = func() { ctx := context.Background() - if reporterImpl != nil { - ids := make([]uint32, nMetrics) - values := make([]int64, nMetrics) - - for i := 0; i < nMetrics; i++ { - ids[i] = uint32(metricsBuffer[i].ID) - values[i] = int64(metricsBuffer[i].Value) - } - reporterImpl.ReportMetrics(prevTimestamp, ids, values) - } for i := range nMetrics { metric := metricsBuffer[i] switch typ := metricTypes[metric.ID]; typ { diff --git a/metrics/metrics.json b/metrics/metrics.json index b2713445d..22a7d952e 100644 --- a/metrics/metrics.json +++ b/metrics/metrics.json @@ -2017,17 +2017,17 @@ "id": 279 }, { - "description": "Number of attempts to read Go custom labels (legacy)", + "description": "placeholder, will be added in a future PR", "type": "counter", - "name": "UnwindGoCustomLabelsAttempts", - "field": "bpf.go_custom_labels.attempts", + "name": "placeholder280", + "field": "placeholder280", "id": 280 }, { - "description": "Number of failures reading Go custom labels (legacy)", + "description": "placeholder, will be added in a future PR", "type": "counter", - "name": "UnwindGoCustomLabelsFailures", - "field": "bpf.go_custom_labels.errors", + "name": "placeholder281", + "field": "placeholder281", "id": 281 }, { diff --git a/processmanager/ebpf/ebpf.go b/processmanager/ebpf/ebpf.go index 538f4ae2d..5aa6ffa27 100644 --- a/processmanager/ebpf/ebpf.go +++ b/processmanager/ebpf/ebpf.go @@ -411,7 +411,6 @@ func (impl *ebpfMapsImpl) loadUSDTProgram(progName string, useMulti bool) error // These errors tend to have hundreds of lines (or more), // so we print each line individually. if ve, ok := err.(*cebpf.VerifierError); ok { - log.Errorf("failed to load %s: %v", progSpec.Name, ve.Unwrap()) for _, line := range ve.Log { log.Error(line) } @@ -421,7 +420,7 @@ func (impl *ebpfMapsImpl) loadUSDTProgram(progName string, useMulti bool) error log.Error(scanner.Text()) } } - return fmt.Errorf("failed to load %s: %w", progSpec.Name, err) + return fmt.Errorf("failed to load %s", progSpec.Name) } impl.userProgs[progSpec.Name] = prog return nil diff --git a/processmanager/processinfo.go b/processmanager/processinfo.go index a18bbd665..38088a556 100644 --- a/processmanager/processinfo.go +++ b/processmanager/processinfo.go @@ -308,11 +308,8 @@ func (pm *ProcessManager) handleNewMapping(pr process.Process, m *Mapping, pm.assignTSDInfo(pid, ei.TSDInfo) - // Handle interpreter if present if ei.Data != nil { - if err := pm.handleNewInterpreter(pr, m, &ei); err != nil { - return err - } + return pm.handleNewInterpreter(pr, m, &ei) } return nil @@ -770,7 +767,6 @@ func (pm *ProcessManager) ProcessedUntil(traceCaptureKTime times.KTime) { log.Debugf("PID %v deleted", pid) delete(pm.pidToProcessInfo, pid) - // Detach all interpreters for this PID for _, instance := range pm.interpreters[pid] { if err2 := instance.Detach(pm.ebpf, pid); err2 != nil { err = errors.Join(err, @@ -779,7 +775,6 @@ func (pm *ProcessManager) ProcessedUntil(traceCaptureKTime times.KTime) { } } delete(pm.interpreters, pid) - delete(pm.exitEvents, pid) log.Debugf("PID %v exit latency %v ms", pid, (nowKTime-pidExitKTime)/1e6) } diff --git a/reporter/samples/samples.go b/reporter/samples/samples.go index 4b9f1f144..0f24e8597 100644 --- a/reporter/samples/samples.go +++ b/reporter/samples/samples.go @@ -8,19 +8,17 @@ import ( ) type TraceEventMeta struct { - Timestamp libpf.UnixTime64 - Comm string - ProcessName string - ExecutablePath string - APMServiceName string - ContainerID string - PID, TID libpf.PID - CPU int - Origin libpf.Origin - OffTime int64 - Allocs, Frees uint64 - AllocBytes, FreeBytes uint64 - EnvVars map[string]string + Timestamp libpf.UnixTime64 + Comm string + ProcessName string + ExecutablePath string + APMServiceName string + ContainerID string + PID, TID libpf.PID + CPU int + Origin libpf.Origin + OffTime int64 + EnvVars map[string]string } // TraceEvents holds known information about a trace. @@ -36,6 +34,8 @@ type TraceEvents struct { // contain all trace fields that aren't already part of the trace hash to ensure // that we don't accidentally merge traces with different fields. type TraceAndMetaKey struct { + // Hash is not sent forward, but it is used as the primary key + // to not aggregate difference traces. Hash libpf.TraceHash // comm and apmServiceName are provided by the eBPF programs Comm string diff --git a/support/.gitignore b/support/.gitignore index 9ed3b07ce..f5d8d65e0 100644 --- a/support/.gitignore +++ b/support/.gitignore @@ -1 +1,3 @@ *.test +ebpf/tracer.ebpf.debug.amd64 +ebpf/tracer.ebpf.debug.arm64 diff --git a/support/ebpf/go_labels.ebpf.c b/support/ebpf/go_labels.ebpf.c index 662637b94..c7a49cd5f 100644 --- a/support/ebpf/go_labels.ebpf.c +++ b/support/ebpf/go_labels.ebpf.c @@ -173,20 +173,16 @@ static EBPF_INLINE int go_labels(struct pt_regs *ctx) u32 pid = record->trace.pid; GoLabelsOffsets *offsets = bpf_map_lookup_elem(&go_labels_procs, &pid); if (!offsets) { - DEBUG_PRINT("cl: no offsets, %d not recognized as a go binary. This should never happen!", pid); - // We shouldn't tail call - // into this program if there is no map element. - // Nevertheless, if that happens due to some bug, - // fall through rather than swallowing the trace. - } else { - DEBUG_PRINT( - "cl: go offsets found, %d recognized as a go binary: m_ptr: %lx", - pid, - (unsigned long)record->customLabelsState.go_m_ptr); - bool success = get_go_custom_labels(record, offsets); - if (!success) { - increment_metric(metricID_UnwindGoLabelsFailures); - } + DEBUG_PRINT("cl: no offsets, %d not recognized as a go binary", pid); + return -1; + } + DEBUG_PRINT( + "cl: go offsets found, %d recognized as a go binary: m_ptr: %lx", + pid, + (unsigned long)record->customLabelsState.go_m_ptr); + bool success = get_go_custom_labels(record, offsets); + if (!success) { + increment_metric(metricID_UnwindGoLabelsFailures); } send_trace(ctx, &record->trace); diff --git a/support/ebpf/interpreter_dispatcher.ebpf.c b/support/ebpf/interpreter_dispatcher.ebpf.c index e22d69611..cdd061ff0 100644 --- a/support/ebpf/interpreter_dispatcher.ebpf.c +++ b/support/ebpf/interpreter_dispatcher.ebpf.c @@ -8,7 +8,6 @@ #include "tracemgmt.h" #include "tsd.h" #include "types.h" -#include "util.h" // Begin shared maps @@ -731,6 +730,7 @@ static EBPF_INLINE int unwind_stop(struct pt_regs *ctx) } // TEMPORARY HACK END + // Must be last since it may not return (it will call send_trace). maybe_add_go_custom_labels(ctx, record); send_trace(ctx, trace); diff --git a/support/ebpf/kernel.h b/support/ebpf/kernel.h index 2587d77a0..cf239ed3b 100644 --- a/support/ebpf/kernel.h +++ b/support/ebpf/kernel.h @@ -207,12 +207,6 @@ enum { // (other values omitted here) }; -struct bpf_perf_event_value { - u64 counter; - u64 enabled; - u64 running; -}; - // BPF helper function IDs // https://github.com/torvalds/linux/blob/e8f897f4a/include/uapi/linux/bpf.h#L5683 #define BPF_FUNC_map_lookup_elem 1 diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 800e512cd..2b3b5997f 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -53,7 +53,7 @@ bpf_map_def SEC("maps") unwind_info_array = { }; // The number of native frames to unwind per frame-unwinding eBPF program. -#define NATIVE_FRAMES_PER_PROGRAM 8 +#define NATIVE_FRAMES_PER_PROGRAM 4 // The decision whether to unwind native stacks or interpreter stacks is made by checking if a given // PC address falls into the "interpreter loop" of an interpreter. This map helps identify such diff --git a/support/ebpf/tracemgmt.h b/support/ebpf/tracemgmt.h index 80153e4b8..4f1c3c160 100644 --- a/support/ebpf/tracemgmt.h +++ b/support/ebpf/tracemgmt.h @@ -217,7 +217,6 @@ static inline EBPF_INLINE PerCPURecord *get_pristine_per_cpu_record() record->state.r22 = 0; record->state.r28 = 0; record->state.lr_invalid = false; - record->state.r28 = 0; #endif record->state.return_address = false; record->state.error_metric = -1; @@ -249,8 +248,9 @@ static inline EBPF_INLINE PerCPURecord *get_pristine_per_cpu_record() trace->apm_transaction_id.as_int = 0; trace->custom_labels.len = 0; - _Static_assert(sizeof(CustomLabel) % 8 == 0, "CustomLabel size must be a multiple of 8 bytes."); - u64 *labels_space = (u64 *)&trace->custom_labels.labels; + u64 *labels_space = (u64 *)&trace->custom_labels.labels; + // I'm not sure this is necessary since we only increment len after + // we successfully write the label. UNROLL for (int i = 0; i < sizeof(CustomLabel) * MAX_CUSTOM_LABELS / 8; i++) { labels_space[i] = 0; @@ -516,7 +516,6 @@ static inline EBPF_INLINE ErrorCode resolve_unwind_mapping(PerCPURecord *record, decode_bias_and_unwind_program(val->bias_and_unwind_program, &state->text_section_bias, unwinder); state->text_section_id = val->file_id; state->text_section_offset = pc - state->text_section_bias; - DEBUG_PRINT( "Text section id for PC %lx is %llx (unwinder %d)", (unsigned long)pc, diff --git a/support/ebpf/tracer.ebpf.amd64 b/support/ebpf/tracer.ebpf.amd64 index da063771d..6912770fe 100644 Binary files a/support/ebpf/tracer.ebpf.amd64 and b/support/ebpf/tracer.ebpf.amd64 differ diff --git a/support/ebpf/tracer.ebpf.arm64 b/support/ebpf/tracer.ebpf.arm64 index 0461ad454..35c83d351 100644 Binary files a/support/ebpf/tracer.ebpf.arm64 and b/support/ebpf/tracer.ebpf.arm64 differ diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 60e33c12b..c408897bf 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -1,4 +1,4 @@ -// provides type definitions shared by the eBPF and Go components +// Provides type definitions shared by the eBPF and Go components #ifndef OPTI_TYPES_H #define OPTI_TYPES_H @@ -274,10 +274,10 @@ enum { // number of failures to get TSD base for APM correlation metricID_UnwindApmIntErrReadTsdBase, - // number of failures to read the APM correlation pointer + // number of failures read the APM correlation pointer metricID_UnwindApmIntErrReadCorrBufPtr, - // number of failures to read the APM correlation buffer + // number of failures read the APM correlation buffer metricID_UnwindApmIntErrReadCorrBuf, // number of successful reads of APM correlation info @@ -301,12 +301,7 @@ enum { // number of failures to unwind code object due to its large size metricID_UnwindDotnetErrCodeTooLarge, - // number of attempts to read Go custom labels (legacy) - metricID_UnwindGoCustomLabelsAttempts, - - // number of failures to read Go custom labels (legacy) - metricID_UnwindGoCustomLabelsFailures, - + // number of attempts to read Go custom labels // number of failures to get TSD base for native custom labels metricID_UnwindNativeCustomLabelsErrReadTsdBase, @@ -351,10 +346,9 @@ enum { // total number of failed attempts to add node custom labels metricID_UnwindNodeCustomLabelsFailures, - // number of attempts to read Go labels (upstream) metricID_UnwindGoLabelsAttempts, - // number of failures to read Go labels (upstream) + // number of failures to read Go custom labels metricID_UnwindGoLabelsFailures, // number of times dlopen uprobe was fired @@ -399,14 +393,13 @@ typedef enum TraceOrigin { TRACE_SAMPLING, TRACE_OFF_CPU, TRACE_UPROBE, - TRACE_MEMORY, TRACE_CUDA_LAUNCH, } TraceOrigin; // MAX_FRAME_UNWINDS defines the maximum number of frames per // Trace we can unwind and respect the limit of eBPF instructions, // limit of tail calls and limit of stack size per eBPF program. -#define MAX_FRAME_UNWINDS 256 +#define MAX_FRAME_UNWINDS 128 // MAX_NON_ERROR_FRAME_UNWINDS defines the maximum number of frames // to be pushed by unwinders while still leaving space for an error frame. diff --git a/support/types.go b/support/types.go index 8907f6e37..92d87b38b 100644 --- a/support/types.go +++ b/support/types.go @@ -53,10 +53,10 @@ const ( EventTypeGenericPID = 0x1 ) -const MaxFrameUnwinds = 0x100 +const MaxFrameUnwinds = 0x80 const ( - MetricIDBeginCumulative = 0x73 + MetricIDBeginCumulative = 0x71 ) const ( @@ -91,8 +91,7 @@ const ( TraceOriginSampling = 0x1 TraceOriginOffCPU = 0x2 TraceOriginUProbe = 0x3 - TraceOriginMemory = 0x4 - TraceOriginCuda = 0x5 + TraceOriginCuda = 0x4 ) type ApmSpanID [8]byte @@ -180,7 +179,7 @@ type Trace struct { Stack_len uint32 Origin uint32 Offtime uint64 - Frames [256]Frame + Frames [128]Frame } type UnwindInfo struct { Opcode uint8 @@ -333,7 +332,7 @@ type LuaJITProcInfo struct { const ( Sizeof_Frame = 0x18 Sizeof_StackDelta = 0x4 - Sizeof_Trace = 0x1b70 + Sizeof_Trace = 0xf70 sizeof_ApmIntProcInfo = 0x8 sizeof_DotnetProcInfo = 0x4 @@ -489,10 +488,7 @@ var MetricsTranslation = []metrics.MetricID{ 0x5d: metrics.IDUnwindDotnetErrBadFP, 0x5e: metrics.IDUnwindDotnetErrCodeHeader, 0x5f: metrics.IDUnwindDotnetErrCodeTooLarge, - 0x69: metrics.IDUnwindLuaJITAttempts, - 0x6a: metrics.IDUnwindLuaJITErrNoProcInfo, - 0x72: metrics.IDDlopenUprobeHits, - 0x6d: metrics.IDUnwindNodeCustomLabelsAttempts, - 0x6e: metrics.IDUnwindNodeCustomLabelsSuccesses, - 0x6f: metrics.IDUnwindNodeCustomLabelsFailures, + 0x67: metrics.IDUnwindLuaJITAttempts, + 0x68: metrics.IDUnwindLuaJITErrNoProcInfo, + 0x70: metrics.IDDlopenUprobeHits, } diff --git a/support/types_def.go b/support/types_def.go index f42a67d46..04862c832 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -103,7 +103,6 @@ const ( TraceOriginSampling = C.TRACE_SAMPLING TraceOriginOffCPU = C.TRACE_OFF_CPU TraceOriginUProbe = C.TRACE_UPROBE - TraceOriginMemory = C.TRACE_MEMORY TraceOriginCuda = C.TRACE_CUDA_LAUNCH ) @@ -304,7 +303,4 @@ var MetricsTranslation = []metrics.MetricID{ C.metricID_UnwindLuaJITAttempts: metrics.IDUnwindLuaJITAttempts, C.metricID_UnwindLuaJITErrNoProcInfo: metrics.IDUnwindLuaJITErrNoProcInfo, C.metricID_DlopenUprobeHits: metrics.IDDlopenUprobeHits, - C.metricID_UnwindNodeCustomLabelsAttempts: metrics.IDUnwindNodeCustomLabelsAttempts, - C.metricID_UnwindNodeCustomLabelsSuccesses: metrics.IDUnwindNodeCustomLabelsSuccesses, - C.metricID_UnwindNodeCustomLabelsFailures: metrics.IDUnwindNodeCustomLabelsFailures, } diff --git a/tools/coredump/coredump.go b/tools/coredump/coredump.go index 347cad9f0..3cb237e33 100644 --- a/tools/coredump/coredump.go +++ b/tools/coredump/coredump.go @@ -66,13 +66,13 @@ func generateErrorMap() (map[libpf.AddressOrLineno]string, error) { Name string `json:"name"` } - var errs []JSONError - if err = json.NewDecoder(file).Decode(&errs); err != nil { + var errors []JSONError + if err = json.NewDecoder(file).Decode(&errors); err != nil { return nil, fmt.Errorf("failed to parse errors.json: %w", err) } - out := make(map[libpf.AddressOrLineno]string, len(errs)) - for _, item := range errs { + out := make(map[libpf.AddressOrLineno]string, len(errors)) + for _, item := range errors { out[libpf.AddressOrLineno(item.ID)] = item.Name } diff --git a/tools/coredump/ebpfhelpers.go b/tools/coredump/ebpfhelpers.go index d4528f226..4511e68de 100644 --- a/tools/coredump/ebpfhelpers.go +++ b/tools/coredump/ebpfhelpers.go @@ -129,7 +129,7 @@ func __bpf_map_lookup_elem(id C.u64, mapdef *C.bpf_map_def, keyptr unsafe.Pointe if deltas, ok := ctx.exeIDToStackDeltaMaps[ctx.stackDeltaFileID]; ok { return unsafe.Pointer(uintptr(deltas) + key*C.sizeof_StackDelta) } - case &C.metrics, &C.reported_pids: + case &C.metrics: return unsafe.Pointer(uintptr(0)) case &C.system_config: return ctx.systemConfig diff --git a/tracer/events.go b/tracer/events.go index 0afeadbcd..ba110e0f4 100644 --- a/tracer/events.go +++ b/tracer/events.go @@ -267,9 +267,6 @@ func (t *Tracer) startTraceEventMonitor(ctx context.Context, lost := lostEventsCount.Swap(0) noData := noDataCount.Swap(0) readError := readErrorCount.Swap(0) - if lost > 0 || readError > 0 { - log.Warnf("[trace] trace event reader: lost=%d readErrors=%d noData=%d", lost, readError, noData) - } return []metrics.Metric{ {ID: metrics.IDTraceEventLost, Value: metrics.MetricValue(lost)}, {ID: metrics.IDTraceEventNoData, Value: metrics.MetricValue(noData)}, diff --git a/tracer/tracer.go b/tracer/tracer.go index ce871b04c..2aaf2c827 100644 --- a/tracer/tracer.go +++ b/tracer/tracer.go @@ -586,8 +586,7 @@ func loadPerfUnwinders(coll *cebpf.CollectionSpec, ebpfProgs map[string]*cebpf.P name: "native_tracer_entry", noTailCallTarget: true, enable: true, - }, - ) + }) for _, unwindProg := range progs { if !unwindProg.enable { @@ -963,8 +962,6 @@ func (t *Tracer) loadBpfTrace(raw []byte, cpu int) *host.Trace { Lineno: libpf.AddressOrLineno(rawFrame.Addr_or_line), Type: libpf.FrameType(rawFrame.Kind), ReturnAddress: rawFrame.Return_address != 0, - LJCalleePC: uint32(rawFrame.Callee_pc_lo) + (uint32(rawFrame.Callee_pc_hi) << 16), - LJCallerPC: uint32(rawFrame.Caller_pc_lo) + (uint32(rawFrame.Caller_pc_hi) << 16), } } return trace diff --git a/tracer/types/parse.go b/tracer/types/parse.go index 775cde3d4..c3b043251 100644 --- a/tracer/types/parse.go +++ b/tracer/types/parse.go @@ -154,6 +154,7 @@ func Parse(tracers string) (IncludedTracers, error) { if tracersEnabled := result.String(); tracersEnabled != "" { log.Debugf("Tracer string: %v", tracers) + log.Infof("Interpreter tracers: %v", tracersEnabled) } return result, nil