IBM Support

PI69845: Deadlock when the Java logging framework logs a warning in com.ibm.ws.logging.WsLogConfigurator

Fixes are available

9.0.0.3: WebSphere Application Server traditional V9.0 Fix Pack 3
8.0.0.13: WebSphere Application Server V8.0 Fix Pack 13
7.0.0.43: WebSphere Application Server V7.0 Fix Pack 43
9.0.0.4: WebSphere Application Server traditional V9.0 Fix Pack 4
8.5.5.12: WebSphere Application Server V8.5.5 Fix Pack 12
9.0.0.5: WebSphere Application Server traditional V9.0 Fix Pack 5
8.0.0.14: WebSphere Application Server V8.0 Fix Pack 14
9.0.0.6: WebSphere Application Server traditional V9.0 Fix Pack 6
8.5.5.13: WebSphere Application Server V8.5.5 Fix Pack 13
9.0.0.7: WebSphere Application Server traditional V9.0 Fix Pack 7
7.0.0.45: WebSphere Application Server V7.0 Fix Pack 45
8.0.0.15: WebSphere Application Server V8.0 Fix Pack 15
7.0.0.45: Java SDK 1.6 SR16 FP60 Cumulative Fix for WebSphere Application Server
7.0.0.43: Java SDK 1.6 SR16 FP41 Cumulative Fix for WebSphere Application Server
9.0.0.8: WebSphere Application Server traditional V9.0 Fix Pack 8
8.5.5.14: WebSphere Application Server V8.5.5 Fix Pack 14
9.0.0.9: WebSphere Application Server traditional V9.0 Fix Pack 9
9.0.0.10: WebSphere Application Server traditional V9.0 Fix Pack 10
8.5.5.15: WebSphere Application Server V8.5.5 Fix Pack 15
9.0.0.11: WebSphere Application Server traditional V9.0 Fix Pack 11
9.0.5.0: WebSphere Application Server traditional Version 9.0.5 Refresh Pack
9.0.5.1: WebSphere Application Server traditional Version 9.0.5 Fix Pack 1
9.0.5.2: WebSphere Application Server traditional Version 9.0.5 Fix Pack 2
8.5.5.17: WebSphere Application Server V8.5.5 Fix Pack 17
9.0.5.3: WebSphere Application Server traditional Version 9.0.5 Fix Pack 3
9.0.5.4: WebSphere Application Server traditional Version 9.0.5 Fix Pack 4
9.0.5.5: WebSphere Application Server traditional Version 9.0.5 Fix Pack 5
9.0.5.6: WebSphere Application Server traditional Version 9.0.5 Fix Pack 6

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Deadlock occurs when
    com.ibm.ws.logging.WsLoggerConfigurator.getLoggerCurr entLog
    gingConfiguration attempts to call a method (logMessage()),
    where it contends for a System out stream.
    
    System thread ID: 1168                 JNI: 0x04D3D400
    WAS thread-ID: 0x000000C3
    
    Currently waiting
    on:(com.ibm.ejs.ras.SystemOutStream@0x12055A68)
    Currently holding
    monitors:(com.ibm.ws.bootstrap.WsLogManager@0x12040028)
    Java Stack Frames:
    
    com.ibm.ejs.ras.SystemOutStream.logMessage(SystemOutStream.java:
    300)
    
    com.ibm.ejs.ras.SystemOutStream.processEvent(SystemOutStream.jav
    a:291)
    
    com.ibm.ws.logging.WsHandlerWrapper.publish(WsHandlerWrapper.jav
    a:43)
      java.util.logging.Logger.log(Logger.java:1302)
      com.ibm.ws.logging.WsLogger.deliverOrBuffer(WsLogger.java:286)
      com.ibm.ws.logging.WsLogger.log(WsLogger.java:264)
      com.ibm.ws.logging.WsLogger.logp(WsLogger.java:499)
    
    com.ibm.ws.logging.WsLoggerConfigurator.logMessage(WsLoggerConfi
    gurator.
    java:569)
    
    com.ibm.ws.logging.WsLoggerConfigurator.getCurrentLoggingConfigu
    ration(W
    sLoggerConfigurator.java:354)
    
    com.ibm.ws.logging.WsLoggerConfigurator.getLoggerConfiguration(W
    sLoggerC
    onfigurator.java:123)
    
    com.ibm.ws.logging.WsLoggerConfigurator.configureLogger(WsLogger
    Configur
    ator.java:375)
    
    com.ibm.ws.logging.WsLoggerFactoryImpl.createWsLogger(WsLoggerFa
    ctoryImp
    l.java:80)
    
    com.ibm.ws.bootstrap.RASDelegator.createWsLogger(RASDelegator.ja
    va:74)
    
    com.ibm.ws.bootstrap.WsLogManager.getLogger(WsLogManager.java:22
    0)
      java.util.logging.LogManager.demandLogger(LogManager.java:990)
      java.util.logging.Logger.demandLogger(Logger.java:557)
      java.util.logging.Logger.getLogger(Logger.java:411)
      sun.awt.AppContext.<clinit>(AppContext.java:125)
      java.lang.J9VMInternals.initializeImpl()
      java.lang.J9VMInternals.initialize(J9VMInternals.java:199)
      sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:310)
      java.lang.Thread.run(Thread.java:767)
    

Local fix

  • disable the logger by
    setting"com.ibm.ws.logging.WsLoggerConfigurator=off" in the
    trace specification.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server.                                     *
    ****************************************************************
    * PROBLEM DESCRIPTION: A deadlock occurs when the Java logging *
    *                      framework logs a warning in             *
    *                      com.ibm.ws.logging.WsLogConfigurator.   *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The deadlock occurs in
    com.ibm.ws.logging.WsLogConfigurator.getCurrentLoggingConfigurat
    ion(), when it attempts to log a warning message, as it was
    unable to get the context classloader, for the current logging
    configuration as it holds onto the WsLogManager lock. This
    causes it to contend for the system out stream, where the system
    out stream lock was held on by the application, which lead to a
    circular dependency, causing the deadlock. Below is the snippet
    of the stack traces of the two threads that are deadlocked:
    System thread ID: 3036                 JNI: 0x045C3B00
    State: 0x00000401 (ALIVE,BLOCKED_ON_MONITOR_ENTER) Priority: 5
    WAS thread-ID: 0x0000009F
    Currently waiting on:
    (com.ibm.ws.bootstrap.WsLogManager@0x12040028)
    Currently holding monitors:
    (com.ibm.ejs.ras.SystemOutStream@0x12055A68)
    (org.apache.log4j.Logger@0x12242F80)
    (org.apache.log4j.ConsoleAppender@0x5AC3D5C8)
    Java Stack Frames:
    java.util.logging.LogManager.initializeGlobalHandlers(LogManage
    r.java:1
    214)
    java.util.logging.LogManager.access$900(LogManager.java:140)
    java.util.logging.LogManager$RootLogger.accessCheckedHandlers(L
    ogManage
    r.java:1208)
    java.util.logging.Logger.getHandlers(Logger.java:630)
    com.ibm.ejs.ras.Tr.logToWsHandlers(Tr.java:1693)
    com.ibm.ejs.ras.Tr.systemOut(Tr.java:1000)
    ....
    System thread ID: 1168                 JNI: 0x04D3D400
    WAS thread-ID: 0x000000C3
    Currently waiting on:
    (com.ibm.ejs.ras.SystemOutStream@0x12055A68)
    Currently holding
    monitors:(com.ibm.ws.bootstrap.WsLogManager@0x12040028)
    Java Stack Frames:
    com.ibm.ejs.ras.SystemOutStream.logMessage(SystemOutStream.java:
    300)
    com.ibm.ejs.ras.SystemOutStream.processEvent(SystemOutStream.jav
    a:291)
    com.ibm.ws.logging.WsHandlerWrapper.publish(WsHandlerWrapper.jav
    a:43)
    java.util.logging.Logger.log(Logger.java:1302)
    com.ibm.ws.logging.WsLogger.deliverOrBuffer(WsLogger.java:286)
    com.ibm.ws.logging.WsLogger.log(WsLogger.java:264)
    com.ibm.ws.logging.WsLogger.logp(WsLogger.java:499)
    com.ibm.ws.logging.WsLoggerConfigurator.logMessage(WsLoggerConfi
    gurator.java:569)
    com.ibm.ws.logging.WsLoggerConfigurator.getCurrentLoggingConfigu
    ration(WsLoggerConfigurator.java:354)
    com.ibm.ws.logging.WsLoggerConfigurator.getLoggerConfiguration(W
    sLoggerC
    onfigurator.java:123)
    com.ibm.ws.logging.WsLoggerConfigurator.configureLogger(WsLoggeC
    onfigurator.java:375)
    ...
    

Problem conclusion

  • To prevent the deadlock situation, the logging level was
    lowered from WARNING to FINE, which will stop it from
    contending for the system out stream, effectively ending the
    circular dependency.
    
    The fix for this APAR is currently targeted for inclusion in
    fix packs 7.0.0.43, 8.0.0.13, 8.5.5.12 and 9.0.0.3.  Please
    refer to the Recommended Updates page for delivery information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

  • Disable the logger by setting
    com.ibm.ws.logging.WsLoggerConfigurator=off in the trace
    specification.
    Switching off this class will disable the code path from being
    run, which is leading to the deadlock on the WsLogManager
    object.
    

Comments

APAR Information

  • APAR number

    PI69845

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-09-28

  • Closed date

    2016-11-03

  • Last modified date

    2016-11-03

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

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

Fix information

  • Fixed component name

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R700 PSY

       UP

  • R800 PSY

       UP

  • R850 PSY

       UP

  • R900 PSY

       UP

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0"}]

Document Information

Modified date:
07 September 2021