Fixes are available
APAR status
Closed as program error.
Error description
A hang condition may occur due to a deadlock between two classes com/ibm/icu/impl/ICUResourceBundle and com/ibm/icu/util/UResourceBundle This deadlock is caused by misplaced synchronization on the static method ICUResourceBundle.instantiateBundle(). The synchronization is to protect a static resource in its superclass UResourceBundle. UResourceBundle uses static synchronized methods to protect the resource. So the problem is the "synchronized" keyword on the static method in the subclass ( ICUResourceBundle.instantiateBundle() ) is actually a different lock for the same resource. It locks on ICUResourceBundle.class. It needs to use the same lock as the superclass. The result is the deadlock: Thread A - holds lock ICUResourceBundle.class - needs lock UResourceBundle.class Thread B - holds lock UResourceBundle.class - needs lock ICUResourceBundle.class The fix is to remove the "synchronized" on the ICUResourceBundle.instantiateBundle() method, and then enclose the contents of that method inside a sync block like this: protected static ... instantiateBundle( ... ) { synchronized(UResourceBundle.class) { ... } }
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All users of IBM WebSphere Application * * Server V7 * **************************************************************** * PROBLEM DESCRIPTION: A thread synchronization problem in * * International Components for * * Unicode (ICU) library might cause the * * application to hang. * **************************************************************** * RECOMMENDATION: * **************************************************************** The International Components for Unicode (ICU) for java library (version 3.4.5) is included with WebSphere Application Server. Incorrect coding for synchronization on the static method ICUResourceBundle.instantiateBundle() might cause a hang condition. The problem can be diagnosed by taking java core dumps. The dumps will show a deadlock between two threads, similar to the following: Dump Event "user" (00004000) received Deadlock detected !!! ---------- Thread "WebContainer : 3" (0x0000000003B55200) is waiting for: com/ibm/icu/impl/ICUResourceBundle@0x0000000012796398/0x00000000 127963A4: which is owned by: Thread "WebContainer : 10" (0x00000000041C0500) which is waiting for: com/ibm/icu/util/UResourceBundle@0x0000000012796370/0x0000000012 79637C: which is owned by: Thread "WebContainer : 3" (0x0000000003B55200) ---------- "WebContainer : 3" J9VMThread:0x0000000003B55200, Java callstack: at com/ibm/icu/impl/ICUResourceBundle.getBundleInstance(ICUResource Bundle.java:1140) at com/ibm/icu/util/UResourceBundle.instantiateBundle(UResourceBund le.java:498) at com/ibm/icu/util/UResourceBundle.getBundleInstance(UResourceBund le.java:127) at com/ibm/icu/util/UResourceBundle.getBundleInstance(UResourceBund le.java:108) at com/ibm/icu/util/UResourceBundle.getBundleInstance(UResourceBund le.java:195) at com/ibm/icu/text/RuleBasedCollator.<init>(RuleBasedCollator.java :1811) at com/ibm/icu/text/CollatorServiceShim$CService$1CollatorFactory.h andleCreate(CollatorServiceShim.java:114) at com/ibm/icu/impl/ICULocaleService$LocaleKeyFactory.create(ICULoc aleService.java:364) at com/ibm/icu/impl/ICUService.getKey(ICUService.java:463) at com/ibm/icu/impl/ICUService.getKey(ICUService.java:383) at com/ibm/icu/impl/ICULocaleService.get(ICULocaleService.java:72) at com/ibm/icu/impl/ICULocaleService.get(ICULocaleService.java:56) at com/ibm/icu/text/CollatorServiceShim.getInstance(CollatorService Shim.java:34) at com/ibm/icu/text/Collator.getInstance(Collator.java:484) at com/ibm/icu/text/Collator.getInstance(Collator.java:501) at com/ibm/commerce/bi/taglib/BaseTag.doStartTag(BaseTag.java:93) ---------- "WebContainer : 10" J9VMThread:0x00000000041C0500, Java callstack: at com/ibm/icu/impl/ICUResourceBundle.instantiateBundle(ICUResource Bundle.java:1155) at com/ibm/icu/impl/ICUResourceBundle.getBundleInstance(ICUResource Bundle.java:1140) at com/ibm/icu/impl/ICUResourceBundleImpl.findResource(ICUResourceB undleImpl.java:706) at com/ibm/icu/impl/ICUResourceBundleImpl.createBundleObject(ICURes ourceBundleImpl.java:195) at com/ibm/icu/impl/ICUResourceBundleImpl.access$1300(ICUResourceBu ndleImpl.java:29) at com/ibm/icu/impl/ICUResourceBundleImpl$ResourceTable.handleGet(I CUResourceBundleImpl.java:269) at com/ibm/icu/impl/ICUResourceBundleImpl$ResourceTable.handleGet(I CUResourceBundleImpl.java:246) at com/ibm/icu/impl/ICUResourceBundle.findResourceWithFallback(ICUR esourceBundle.java:1105) at com/ibm/icu/impl/ICUResourceBundle.getWithFallback(ICUResourceBu ndle.java:652) at com/ibm/icu/text/RuleBasedCollator.<init>(RuleBasedCollator.java :1824) at com/ibm/icu/text/CollatorServiceShim$CService$1CollatorFactory.h andleCreate(CollatorServiceShim.java:114) at com/ibm/icu/impl/ICULocaleService$LocaleKeyFactory.create(ICULoc aleService.java:364) at com/ibm/icu/impl/ICUService.getKey(ICUService.java:463) at com/ibm/icu/impl/ICUService.getKey(ICUService.java:383) at com/ibm/icu/impl/ICULocaleService.get(ICULocaleService.java:72) at com/ibm/icu/impl/ICULocaleService.get(ICULocaleService.java:56) at com/ibm/icu/text/CollatorServiceShim.getInstance(CollatorService Shim.java:34) at com/ibm/icu/text/Collator.getInstance(Collator.java:484) at com/ibm/icu/text/Collator.getInstance(Collator.java:501) at com/ibm/commerce/bi/taglib/BaseTag.doStartTag(BaseTag.java:93) ---------- The problem is the static method ICUResourceBundle.instantiateBundle() is synchronized using the wrong lock. It should be using the same lock as its superclass.
Problem conclusion
The static method ICUResourceBundle.instantiateBundle() has been updated to use the same lock as its superclass. The fix for this APAR is currently targeted for inclusion in fix pack 7.0.0.43. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
Temporary fix
Comments
APAR Information
APAR number
PI71844
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-11-04
Closed date
2016-11-22
Last modified date
2016-11-22
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
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
19 October 2021