This PR prevents the `clhsdb pstack` command from throwing a 
`DebuggerException` when obtaining the top frame. The exception occurs when the 
PC is within a native library that has no `.eh_frame` section.

I added a test, `ClhsdbPstackNoEhFrame.java`, that uses a native library 
without an `.eh_frame` section. The test fails with a `DebuggerException` 
without the fix in `LinuxAARCH64CFrame.java`.

`getFrameFromReg()` returns the current frame without DWARF information if 
DWARF parsing fails and the PC is within a known native library. Unwinding 
stops at this frame, but analysis continues for other threads. This behavior is 
consistent with the existing `sender()` method.

#### Testing
I've run the following tests on Linux AArch64.

$ make run-test 
TEST="jtreg:hotspot/jtreg/serviceability/sa/ClhsdbPstackNoEhFrame.java"
   TEST                                              TOTAL  PASS  FAIL ERROR  
SKIP
   jtreg:test/hotspot/jtreg/serviceability/sa/ClhsdbPstackNoEhFrame.java
                                                         1     1     0     0    
 0
$ make run-test TEST="jtreg:hotspot/jtreg/serviceability/sa/"
   TEST                                              TOTAL  PASS  FAIL ERROR  
SKIP
   jtreg:test/hotspot/jtreg/serviceability/sa           81    76     0     0    
 5

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - Handle missing DWARF information in the top frame on Linux AArch64

Changes: https://git.openjdk.org/jdk/pull/33839/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33839&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8386291
  Stats: 204 lines in 5 files changed: 202 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/33839.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33839/head:pull/33839

PR: https://git.openjdk.org/jdk/pull/33839

Reply via email to