Open ddelnano opened 1 year ago
There was a recent report of this in the Pixie slack. For this problematic case, the Go application in question was built with the following configuration:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, Go BuildID=zabiqC8wfzfmrjRJ0FDq/NV0zLDU8qJwxHA8tkC-k/2e_IZ0k1YT-EJ5tgrhl9/J1BG3wmTbdYe1tMJkFv3, BuildID[sha1]=f0ea16a8de2ad5701cdea163166fc0ff33014c5e, not stripped
When I run go version -m <binary>, I get this info:
go1.20.3
path command-line-arguments
dep github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
dep golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
dep golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
dep golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
dep google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
dep google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ=
dep google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
dep producers (devel)
dep rtp v0.0.0-00010101000000-000000000000
=> ../rtp (devel)
dep ztc_interface v0.0.0-00010101000000-000000000000
=> ./ztc_interface (devel)
build -buildmode=exe
build -compiler=gc
build CGO_ENABLED=1
build CGO_CFLAGS=
build CGO_CPPFLAGS=
build CGO_CXXFLAGS=
build CGO_LDFLAGS=
build GOARCH=amd64
build GOOS=linux
build GOAMD64=v1
We recently revamped how Pixie detects a binary's Go version (#1605). This aligned it with how the
go version
command implements its functionality as well as addressed other bugs in our previous implementation (as described in the linked PR) .We received a report of a
std::bad_alloc
exception that occurs within this new logic, which causes the PEM to crash.Until this bug is addressed, there are two (soon to be three) ways to remediate this issue:
--stirling_uprobe_opt_out
will be available in Vizier v0.14.11 (#1971) and will provide a mechanism for opting binaries out of uprobe instrumentation.PX_STIRLING_DISABLE_GOLANG_TLS_TRACING
PEM flag to true (viapx deploy --pem_flags=PX_STIRLING_DISABLE_GOLANG_TLS_TRACING=true
)