-
Enhancement
-
Resolution: Unresolved
-
P3
-
9, 10
pd_get_top_frame_for_profiling can examine a thread at arbitrary points. Some arbitrary points are more interesting than others. Currently we rely on things like unpredictable thread scheduling and test crashes to find these points, but it takes a long time, and the set of failure points we find is just a random sample, not the complete set.
I suggest we add WhiteBox testing to deterministically test interesting code, starting with CodeBlobs. We can insert special instructions that generate SIGSEGV or SIGILL at strategic places (for example where the stack pointer is being adjusted). Then in the signal handler, call pd_get_top_frame_for_profiling, patch the instruction with a nop, and continue.
I suggest we add WhiteBox testing to deterministically test interesting code, starting with CodeBlobs. We can insert special instructions that generate SIGSEGV or SIGILL at strategic places (for example where the stack pointer is being adjusted). Then in the signal handler, call pd_get_top_frame_for_profiling, patch the instruction with a nop, and continue.
- blocks
-
JDK-8168445 make pd_get_top_frame_for_profiling more robust
- Open
- relates to
-
JDK-8169941 CodeBlob::is_frame_complete_at() does not honor CodeOffsets::frame_never_safe
- Resolved
-
JDK-8284289 JEP 435: Asynchronous Stack Trace VM API
- Closed
-
JDK-8321098 Cooperative JFR Sampling
- In Progress