IBM Support

IZ80188: ON LINUX, JVM HANGS IN SIGNAL HANDLER WHEN MALLOC HEADER STRUCTU RE CORRUPTED

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: JVM freezes in signal handler when memory
    corruption reported in malloc header structure
    .
    Stack Trace: #0  0xffffe410 in __kernel_vsyscall ()
    #1  0xb7f276fe in __lll_mutex_lock_wait () from  /lib/libc.so.6
    #2  0xb7ec3d59 in _L_lock_113 () from /lib/libc.so.6
    #3  0xb7ebf312 in ptmalloc_lock_all () from /lib/libc.so.6
    #4  0xb7ee798f in fork () from /lib/libc.so.6
    #5  0xb7faec74 in fork () from /lib/libpthread.so.0
    #6  0xb7d8ba61 in j9dump_create () from
    /opt/WebSphere61/AppServer/java/jre/bin/libj9prt23.so
    #7  0xb7c23cd6 in doSystemDump () from
    /opt/WebSphere61/AppServer/java/jre/bin/libj9dmp23.so
    .
    

Local fix

  • Use -Xrs option to disable all JVM signal handlers
    

Problem summary

  • The problem is reported when a JVM signal handler is invoked as
    a consequence of memory corruption in the malloc header
    structure on LINUX. JVM signal handler uses the fork system
    function to process the system dump and fork on LINUX uses
    malloc for its functionality. So, when JVM signal handler is
    invoked for such memory corruption, the subsequent call to
    malloc (from fork) resulted in a hang.
    

Problem conclusion

  • JVM has created the option -Xrs:sync which on Linux, z/OS and
    AIX to instruct the JVM to not register signal handlers for
    SIGILL/BUS/FPE/SEGV/TRAP/ABRT signals while preserving JVM
    signal handlers for other signals (like SIGQUIT, etc.). This
    feature enables the JVM not to register signal handlers for
    these selective signals & register signal handler for other
    signals. This way JVM avoids the problematic code path(involves
    fork) on such error conditions without disturbing signal actions
    of other signals. Specifically, while -Xrs disables the
    triggering of the -Xdump:event user event when SIGQUIT is
    injected to the process, -Xrs:sync does not. With -Xrs:sync,
    users can still generate javacore files by injecting SIGQUIT to
    the process.  Notes: 1. -Xrs:sync will reduce performance by
    approximately 2-4% depending on the application as an
    optimization needs to be disabled when it is used. 2. If
    -Xrs:sysc is used and any of the signals it disables are
    delivered to the process, the default OS action for the signal
    will occur. The default OS action is normally to generate a
    system core file, but users confirm this on their system.
    
    This defect will be fixed in:
    5.0.0 SR12
    6.0.0 SR9
    

Temporary fix

Comments

APAR Information

  • APAR number

    IZ80188

  • Reported component name

    J9 COMMON CODE

  • Reported component ID

    620700127

  • Reported release

    600

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-07-15

  • Closed date

    2010-08-25

  • Last modified date

    2010-08-25

  • APAR is sysrouted FROM one or more of the following:

    IZ80185

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    J9 COMMON CODE

  • Fixed component ID

    620700127

Applicable component levels

  • R600 PSY

       UP

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCVQ3W","label":"Virtual Machine"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.0","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
25 August 2010