APAR status
Closed as program error.
Error description
When sending an Invalid SOAP Message Application server can run into a situation where it will end up in allocating 2GB heap causing OutOfMemoryError
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All users of IBM WebSphere Application * * Server * * version 8.5.5 and 9.0 users of * * WebContainer * **************************************************************** * PROBLEM DESCRIPTION: An OutOfMemoryError could occur when * * calling * * java.io.InputStream.available(). * **************************************************************** * RECOMMENDATION: * **************************************************************** When an application or a third party component tries to allocate a buffer array to hold the input stream data, an OutOfMemoryError could happen if there is no check for a positive value, that is returned from the java.io.InputStream.available(), before allocating a new buffer. For example: byte[] data = new byte[InputStream.available()] By default, the WebContainer implements the InputStream.available() and returns -1 when end of stream is reached. Allocating an array with -1 results in a Integer.MAX_VALUE (i.e 2147483647) size being assigned and causes an OutOfMemoryError. A stack example of the problem: JVMDUMP039I Processing dump event "allocation", detail"2147483656 bytes, type byte[]" at 2020/04/16 16:12:18 - pleasewait.Thread=WebContainer : 187 (00007FDE74342720) Status=Running at com/ibm/ws/webservices/utils/BAIS.create(Ljava/io/InputStream;)L com/ibm/ws/webservices/utils/BAIS; (BAIS.java:74) at com/ibm/ws/webservices/utils/WebServicesInputSource.getBAISConte nt()Lcom/ibm/ws/webservices/utils/BAIS;(WebServicesInputSource.j ava:744) at com/ibm/ws/webservices/utils/WebServicesInputSource.getByteArray Content()[B (WebServicesInputSource.java:710) at com/ibm/ws/webservices/utils/WebServicesInputSource.getStringCon tent()Ljava/lang/String; (WebServicesInputSource.java:674) at com/ibm/ws/webservices/utils/WebServicesInputSource.getString()L java/lang/String; (WebServicesInputSource.java:425) at com/ibm/ws/webservices/engine/SOAPPart._getSOAPEnvelope()Lcom/ib m/ws/webservices/engine/xmlsoap/SOAPEnvelope;(SOAPPart.java:1090 ) (Compiled Code) at com/ibm/ws/webservices/engine/SOAPPart.getAsSOAPEnvelope()Lcom/i bm/ws/webservices/engine/xmlsoap/SOAPEnvelope;(SOAPPart.java:628 ) (Compiled Code) at com/ibm/ws/webservices/engine/SOAPPart.getEnvelope()Ljavax/xml/s oap/SOAPEnvelope; (SOAPPart.java:656) (Compiled Code) This problem can be avoided by checking the return value of InputStream.available() and not allocating a new buffer when it is less than 0.
Problem conclusion
The WebContainer provides a new custom property to return 0 instead of -1 when end of stream is reached for the InputStream.available(). com.ibm.ws.webcontainer.returnZeroEndofInputStream = true (default is false) The fix for this APAR is targeted for inclusion in fix pack 8.5.5.18 and 9.0.5.5. For more information, see 'Recommended Updates for WebSphere Application Server': https://www.ibm.com/support/pages/node/715553
Temporary fix
Comments
APAR Information
APAR number
PH24879
Reported component name
WEBS APP SERV N
Reported component ID
5724H8800
Reported release
900
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2020-04-30
Closed date
2020-07-21
Last modified date
2020-07-21
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
R850 PSY
UP
R900 PSY
UP
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
01 November 2021