On Wed, 29 Oct 2025 21:20:34 GMT, Kevin Walls <[email protected]> wrote:
> is there a particular kind of system this reproduces on, or a particular way > to crash things to get to abort via the "cold" route? Maybe it depends on compiler optimization. I use GCC 15.2.1 provided by Fedora 42 to build OpenJDK. The app to crash is nothing special - "normal" SEGV (read `NULL` in JNI): https://github.com/YaSuenag/garakuta/tree/master/NativeSEGV (README is in Japanese for myself, sorry 😅) > If the DWARF lookup works at RIP-1, make the closestSymbol call always use > RIP-1. I think it is not a good idea because the crash might happen on the prologue. For example: push %rbp mov %rsp, %rbp This is prologue code in SysV AMD64. If stack pointer (`%rsp`) points invalid memory (includes guard page caused by stack overflow), the crash would happen on first `push` instruction - the symbol cannot be resolved from `RIP - 1` because this `push` instruction is located at the first of the function. `RIP - 1` is out of the function. > Is it possible to not find DWARF and still get to resolving a symbol? Yes, symbol resolver does not depend on DWARF. However both the symbol and DWARF are closely related to `RIP`, so I think we can handle them with same address for instruction (`RIP` or `RIP - 1`), and also it would be make easy to know what the code want to do. I will update the comment with your suggestion if the above is ok. ------------- PR Comment: https://git.openjdk.org/jdk/pull/27846#issuecomment-3465755757
