Commit 8b069cb
committed
docs(signalInflight): document longjmp-leak limitation
InflightGuard's destructor can be bypassed if the signal handler frame is
unwound by a longjmp. In this codebase the only realistic trigger is J9's
SIGSEGV null-pointer-check handler chaining out of our segvHandler via
siglongjmp to a setjmp in normal Java code. Probability is very low (J9
would have to claim a fault our stack walker produced, which lies in our
own C++ code at addresses J9 has no reason to recognise) and the failure
mode is graceful: a stuck counter makes every subsequent stop() hit the
drain timeout and skip JFR teardown — the safety net this counter exists
to provide.
Document this explicitly rather than build out a workaround. Matches the
existing precedent in guards.h, where SignalHandlerScope's own depth
counter has the same limitation on the same J9 chain path.1 parent 97e9f99 commit 8b069cb
1 file changed
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
31 | 51 | | |
32 | 52 | | |
33 | 53 | | |
| |||
0 commit comments