SAP Knowledge Base Article - Preview

3774226 - Error when tracing HTTP messages due to "String index out of range" observed after upgrade to NW7.50 SP28 or higher

Symptom

Errors observed as "No CRLF at the end of the chunk" when consuming SOAP responses after upgrading Java NetWeaver to SP28 or higher.

Large SOAP responses using HTTP Transfer-Encoding: chunked fail while small payloads succeed. The issue is a regression introduced in SP34, but also affecting upgrades to versions from SP28 onwards. The root cause is the HTTP Server attempting to process an HTTP message before tracing it, which fails due to an out-of-bounds access caused by incorrect chunk boundary handling.
 
The following exceptions (or some of them) are observed in the default trace:

  • java.io.IOException: No CRLF at the end of the chunk [50/53] - chunk boundary parsing failure in ChunkedInputStream.nextChunk()
  • java.lang.StringIndexOutOfBoundsException - likely a consequence of the malformed chunk read
  • XmlUnmarshalException - XML parser fails due to an incomplete or corrupted response body
  • TransportBindingException - raised at the WS client runtime level, wrapping the underlying IOException
  • Errors around ServletOutputStreamImpl.sendChunkedResponse - failure at the chunked response writing level

The following or similar errors are observed in Default Traces:

Caused by: com.sap.engine.lib.xml.parser.ParserException: null (row:-1, col:-1) -> java.io.IOException: No CRLF at the end of the chunk: [50/53]
at com.sap.engine.lib.xml.parser.tokenizer.XMLTokenReaderImpl.next(XMLTokenReaderImpl.java:322)
at com.sap.engine.lib.xml.parser.tokenizer.XMLTokenReaderImpl.getValuePassChars(XMLTokenReaderImpl.java:604)
at com.sap.engine.services.webservices.jaxrpc.encoding.primitive.DiscreteDecimal.deserialize(DiscreteDecimal.java:183)
... 90 more
Caused by: java.io.IOException: No CRLF at the end of the chunk: [50/53]
at com.sap.engine.services.webservices.tools.ChunkedInputStream.nextChunk(ChunkedInputStream.java:87)
at com.sap.engine.services.webservices.tools.ChunkedInputStream.read(ChunkedInputStream.java:67)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at com.sap.engine.lib.xml.parser.readers.SOAPXMLStream.readData(SOAPXMLStream.java:114)
at com.sap.engine.lib.xml.parser.readers.SOAPXMLStream.fetchData(SOAPXMLStream.java:172)
at com.sap.engine.lib.xml.parser.readers.SOAPXMLStream.checkName(SOAPXMLStream.java:432)
at com.sap.engine.lib.xml.parser.XMLParser.scanEndTag(XMLParser.java:1893)
at com.sap.engine.lib.xml.parser.tokenizer.XMLTokenReaderImpl.next(XMLTokenReaderImpl.java:292)
... 92 more

And/or:

#Error#com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment#
#BC-ESI-WS-JAV-RT#webservices_lib#C0000F8019F203A80000000600003148#46839750000000005#banorte.com/cir~calris0175ear#com.sap.engine.services.webservices.espbase.ser ver.runtime.RuntimeProcessingEnvironment#Guest#0##8DB9175D5F5711F18565000002CAB7C6#419a2c035f5811f1886a000002cab7c6#4F3857F95F5811F1909F000002CAB7C6#1#Thread[HTTP Worker [@1233764308],5,Dedicated_Application_Thread]#Plain##
process()
[EXCEPTION]
java.lang.StringIndexOutOfBoundsException: String index out of range: 672768
at java.lang.String.checkBounds(String.java:385)
at java.lang.String.<init>(String.java:545)
at com.sap.engine.services. httpserver.server.Client.trace (Client.java:261)
at com.sap.engine.services.httpserver.server.Client.send(Client.java:218)
at com.sap.engine.services.httpserver.server.ResponseImpl.sendResponse(ResponseImpl.java:226)
at com.sap.engine.services.servlets_jsp.server.runtime.client.ServletOutputStreamImpl.sendChunkedResponse(ServletOutputStreamImpl.java:445)
at com.sap.engine.services.servlets_jsp.server.runtime.client.ServletOutputStreamImpl.writeToClient(ServletOutputStreamImpl.java:418)
at com.sap.engine.services.servlets_jsp.server.runtime.client.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:214)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:167)
at com.sap.engine.services.webservices.espbase.messaging.impl.SOAPMessageImpl.writeTo(SOAPMessageImpl.java:605)
at com.sap.engine.services.webservices.espbase.server.additions.SOAPHTTPTransportBinding.writeMessageSmart(SOAPHTTPTransportBinding.java:1035)
.... more.


Read more...

Environment

The NetWeaver AS Java system's version is upgraded to NW7.50 SP28 or higher and log severity level of children locations of HttpTraceRequest and HttpTraceResponse is higher than Error. 

Product

SAP NetWeaver 7.5 ; SAP NetWeaver Application Server for Java all versions

Keywords

StringIndexOutOfBoundsException, String index out of range, httpserver.server.Client.trace, No CRLF at the end of the chunk, webservices.tools.ChunkedInputStream.nextChunk,  , KBA , BC-JAS-WEB , Web Container, HTTP, JavaMail, Servlets , BC-ESI-WS-JAV-RT , Runtime , Problem

About this page

This is a preview of a SAP Knowledge Base Article. Click more to access the full version on SAP for Me (Login required).

Search for additional results

Visit SAP Support Portal's SAP Notes and KBA Search.