none
Florian Weimer
fweimer at redhat.com
Mon Sep 30 12:55:31 UTC 2019
* Donald Kwakkel:
> Is this a known issue / are there workarounds?
Yes, sort of, we've seen it many times with in-process crash handlers.
> If during malloc a crash signal occurs, the jvm will hang because it will
> call again malloc, which is not reentrant (for explanation see
> https://stackoverflow.com/questions/40049751/malloc-inside-linux-signal-handler-cause-deadlock).
>
>
> This is for production environments a big problem because self-healing (in
> this case an automatic restart through jsvc) will not work. Resulting in
> manual actions by cloud administrators!
The recommended practice is to use a crash handler external to the
process. Of course, this is not going to fix the underlying issue which
causes the crash.
> #11 0x00007f123a9fbbae in VMError::report_and_die(Thread*, unsigned
> int, unsigned char*, void*, void*) () from
> /usr/java/latest/lib/server/libjvm.so
> #12 0x00007f123a7dea10 in JVM_handle_linux_signal () from
> /usr/java/latest/lib/server/libjvm.so
> #13 0x00007f123a7d2c08 in signalHandler(int, siginfo*, void*) () from
> /usr/java/latest/lib/server/libjvm.so
> #14 <signal handler called>
> #15 0x0000003ce2c7856c in _int_malloc () from /lib64/libc.so.6
The question is whether a verbose crash report is actually needed if the
PC value (as recorded in the siginfo* argument) is within libc.so.6.
Maybe in this case, a more limited crash dump is appropriate.
Thanks,
Florian
More information about the hotspot-dev
mailing list