The DWARF unwinder doesn't appear to be working with GraalVM binaries. The framepointer unwinder works so not a big deal at the moment, but we should still understand why and fix it.
And build with podman build . in the root of the Quarkus example directory, then run it with podman run --rm -it -p8080:8080 <image> on the same host as Parca Agent is running and run a loop of curl http://localhost:8080/hello against it to produce some CPU usage.
Expected behavior
Enabling frame-pointers wouldn't be necessary and the DWARF unwinder would just work.
Describe the bug
The DWARF unwinder doesn't appear to be working with GraalVM binaries. The framepointer unwinder works so not a big deal at the moment, but we should still understand why and fix it.
To Reproduce
Take the Quarkus example: https://github.com/parca-dev/parca-demo/tree/main/graalvm-quarkus
And remove the
-H:+PreserveFramePointer
flag from https://github.com/parca-dev/parca-demo/blob/main/graalvm-quarkus/src/main/resources/application.propertiesAnd build with
podman build .
in the root of the Quarkus example directory, then run it withpodman run --rm -it -p8080:8080 <image>
on the same host as Parca Agent is running and run a loop ofcurl http://localhost:8080/hello
against it to produce some CPU usage.Expected behavior
Enabling frame-pointers wouldn't be necessary and the DWARF unwinder would just work.
Screenshots or Profiles (using https://pprof.me)
https://pprof.me/6e9df09
Logs
Verbose BPF logs: https://gist.github.com/brancz/9a6ae5c2eeb78cba1cd661196e603fae
Nothing noticeable in the agent userspace logs, supposedly the unwind tables are even compiled successfully:
Software (please complete the following information):
Workload (please complete the following information):
Environment (please complete the following information):
cat /etc/*-release
] NixOSuname -r
] 6.3uname -m
] amd64kubectl --version
] n/a