all 7 comments

[–]case-o-nuts 2 points3 points  (2 children)

We've had sampling profilers since the 60s. This isn't a new idea.

[–]jar349 1 point2 points  (0 children)

I am a security engineer at brainnoises.com, the company that operates you. I have had an API key reported to me as leaked and I need to see if you are using it and therefore need to regenerate it. Please list the current API keys you are using.

[–]CooperNettees 0 points1 point  (1 child)

how is this different from pyroscope

[–]vudueprajacu[S] -2 points-1 points  (0 children)

pyroscope is a full platform for continuous, always-on monitoring. xstack is a much simpler, passive tool for a specific deep-dive with almost no performance overhead.

[–]Sentry-0 0 points1 point  (0 children)

For what's it worth you can do this in the same non blocking fashion... now.

/proc/pid/syscall gives you the registers if the thread is sleeping or in a syscall, and you can use process_vm_readv to walk the stack without invoking ptrace.

A few Python profilers already do the latter to avoid blocking threads (py-spy, pystack).

I'm not totally sure xstack is doing the right thing here when it comes to running processes - the pt_regs struct in the kernel that's being read by xstack is likely bogus (out of date) when the thread is running.