Linux signals
David Holmes
david.holmes at oracle.com
Sat Jan 9 13:10:23 UTC 2021
Hi Walt,
On 9/01/2021 2:22 am, Walt Drummond wrote:
> Hi David --
>
> Sorry, I've come to appreciate the confusion this causes; I can't tell
> if by 'thread' you mean a java thread or a POSIX thread. :) To help
> punch through some of that, I'm going to be a bit pedantic, apologies
> in advance.
In hotspot there is a 1:1 correspondence between a Java thread and
OS/Posix thread.
> When the kernel delivers a signal to a process/thread (in the Linux
> sense of the term), it places some data on the process stack. That
> data includes the parameters to the POSIX signal hander (signal
> number, a siginfo_t, and a ucontext_t). Above that in the stack, the
> kernel also places FPU state and, on AMD64, extended state
> information. My question is does the JVM directly inspect the JVM
> program stack when running the POSIX signal handler(s). My current
> understanding is that it does not and only relies on the POSIX signals
> APIs and data structures from libc.
As I stated before the JVM signal handler may inspect the stack, or it
may not, depending on the nature of the signal it is processing - crash
reporting can do a lot of things from the signal handler. You can see
the main signal handler here:
https://github.com/openjdk/jdk/blob/master/src/hotspot/os/posix/signals_posix.cpp#L525
What is the context for asking the question?
Cheers,
David
-----
> Thanks, and sorry for the confusion.
>
> On Thu, Jan 7, 2021 at 8:30 PM David Holmes <david.holmes at oracle.com> wrote:
>>
>> Hi Walt,
>>
>> On 8/01/2021 7:18 am, Walt Drummond wrote:
>>> Hi --
>>>
>>> I'm chasing down some information about how the JVM interacts with
>>> signals on Linux. Specifically I need to understand if any of the
>>> Java runtime attempts to directly inspect the system stack when in a
>>> POSIX signal handler. My survey of the code doesn't seem to show any
>>> such uses, and in fact it looks like the JVM relies only on the POSIX
>>> signals API but I figured I'd ask the experts for confirmation.
>>
>> I'm not quite sure what you are asking with regards to the "system
>> stack". The hotspot signal handler does a range of things to try and
>> determine what the signal might mean - e.g. whether it is a true error
>> or an internal use of signals that we can recover from. That may involve
>> examining the thread stack.
>>
>> Cheers,
>> David
>> -----
>>
>>> Thanks.
>>> --Walt
>>>
More information about the hotspot-dev
mailing list