Go version
go version go1.25.5 linux/amd64
Output of go env in your module/workspace:
AR='ar'
CC='cc'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_ENABLED='1'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
CXX='c++'
GCCGO='gccgo'
GO111MODULE=''
GOAMD64='v1'
GOARCH='amd64'
GOAUTH='netrc'
GOBIN='/home/dw1/go/bin'
GOCACHE='/home/dw1/.cache/go-build'
GOCACHEPROG=''
GODEBUG=''
GOENV='/home/dw1/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFIPS140='off'
GOFLAGS=''
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3740035663=/tmp/go-build -gno-record-gcc-switches'
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMOD='/home/dw1/Development/PD/nuclei/go.mod'
GOMODCACHE='/home/dw1/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/dw1/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/home/linuxbrew/.linuxbrew/Cellar/go/1.25.5/libexec'
GOSUMDB='sum.golang.org'
GOTELEMETRY='local'
GOTELEMETRYDIR='/home/dw1/.config/go/telemetry'
GOTMPDIR=''
GOTOOLCHAIN=''
GOTOOLDIR='/home/linuxbrew/.linuxbrew/Cellar/go/1.25.5/libexec/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.25.5'
GOWORK=''
PKG_CONFIG='pkg-config'
What did you do?
I tried to analyze a large execution trace using go tool trace. The trace file size is ~3.5GB+.
$ stat -c %s file.trace | numfmt --to=iec
3.5G
$ go tool trace file.trace
What did you see happen?
And when I try to pull each profile type individually, it just gets signal-killed.
$ export TRACE_FILE=file.trace; \
go tool trace -pprof=net $TRACE_FILE > $TRACE_FILE.net; \
go tool trace -pprof=sync $TRACE_FILE > $TRACE_FILE.sync; \
go tool trace -pprof=syscall $TRACE_FILE > $TRACE_FILE.syscall; \
go tool trace -pprof=sched $TRACE_FILE > $TRACE_FILE.sched
go tool trace: signal: killed
go tool trace: signal: killed
go tool trace: signal: killed
go tool trace: signal: killed
^ pulling them one by one since the box specs are quite limited.
With go tool trace file, so I can extract each profile individually via URL, ex. wget "http://127.0.0.1:0/io?raw=1" -O file.trace.net, but it hangs during the process.
What did you expect to see?
- Extracting individual profiles with
-pprof should ideally avoid loading or processing the entire trace into memory at once.
- If large traces are fundamentally unsupported, some documented limits or warnings would be helpful. ("large" to be enough to trigger either hangs or OOM kills.)
This makes it difficult to analyze large traces even when only a single profile type is needed.
Go version
go version go1.25.5 linux/amd64
Output of
go envin your module/workspace:What did you do?
I tried to analyze a large execution trace using go tool trace. The trace file size is ~3.5GB+.
What did you see happen?
And when I try to pull each profile type individually, it just gets signal-killed.
^ pulling them one by one since the box specs are quite limited.
With
go tool trace file, so I can extract each profile individually via URL, ex.wget "http://127.0.0.1:0/io?raw=1" -O file.trace.net, but it hangs during the process.What did you expect to see?
-pprofshould ideally avoid loading or processing the entire trace into memory at once.This makes it difficult to analyze large traces even when only a single profile type is needed.