Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement stack walking without AsyncGetCallTrace #66

Open
apangin opened this issue Nov 2, 2017 · 4 comments
Open

Implement stack walking without AsyncGetCallTrace #66

apangin opened this issue Nov 2, 2017 · 4 comments
Labels

Comments

@apangin
Copy link
Member

@apangin apangin commented Nov 2, 2017

There is a number of problems with AsyncGetCallTrace API.

  • It is not accurate: sometimes it can point to neighbour methods. See #51 and JDK-8022893.

  • It incorrectly handles certain corner cases. See JDK-8178287.

  • It fails to walk through VM frames in Oracle JDK 9. See #60.

  • It requires preloading of all jmethodIDs thus resulting in startup time overhead. See #14 (comment).

  • It does not distinguish between interpreted, compiled and inlined frames.

  • In rare cases it may crash JVM. See #73.

  • -XX:MaxJavaStackTraceDepth unobviously affects collected stack traces. See #89.

  • Unloaded methods appears in the profile as jvmtiError 23.

  • Cannot walk stack traces from methods compiled with Graal.

  • = has workaround in async-profiler

The idea is to implement Java stack walking on our own without relying on AGCT. Since the agent runs in the context of JVM, it can access VM structures, especially those exported through VMStructs. It should be possible to replicate stack walking logic of the VM inside async-profiler, though it might be challenging. The main risk is that differrent versions of JVM may have different stack layout, but VMStructs along with special handling of the known versions is likely to help.

@toaler
Copy link

@toaler toaler commented Jun 11, 2018

Hi @apangin any thoughts on when the features required to close this issue would be delivered? How potentially contributors help with the open work?

@apangin
Copy link
Member Author

@apangin apangin commented Jun 12, 2018

@toaler Not sure, but unlikely in the nearest release. Are you interested in some particular problem of AGCT?

@LuoXiaoyi
Copy link

@LuoXiaoyi LuoXiaoyi commented Nov 27, 2019

I'd like to know when will the async-profiler support J9?

@apangin
Copy link
Member Author

@apangin apangin commented Nov 27, 2019

@LuoXiaoyi I'd like to know that as well ;) Pull requests are welcome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants