Skip to content

ConstructingParser complains OutOfMemoryError when parsing invalid XML nodes #7311

Closed
@scabug

Description

@scabug

ConstructingParser seems to consume heaps of memory when parsing invalid XML nodes:

Welcome to Scala version 2.10.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import scala.xml.parsing._
import scala.xml.parsing._

scala> import scala.xml._
import scala.xml._

scala> import scala.io._
import scala.io._

scala> ConstructingParser.fromSource(Source.fromString("<node attr=\""), true).document.docElem
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2367)
	at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587)
	at java.lang.StringBuilder.append(StringBuilder.java:214)
	at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:264)
	at scala.xml.parsing.MarkupParserCommon$class.xAttributeValue(MarkupParserCommon.scala:66)
	at scala.xml.parsing.ConstructingParser.xAttributeValue(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParserCommon$class.xAttributeValue(MarkupParserCommon.scala:74)
	at scala.xml.parsing.ConstructingParser.xAttributeValue(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParser$class.xAttributes(MarkupParser.scala:310)
	at scala.xml.parsing.ConstructingParser.xAttributes(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParser$class.mkAttributes(MarkupParser.scala:282)
	at scala.xml.parsing.ConstructingParser.mkAttributes(ConstructingParser.scala:47)
	at scala.xml.parsing.ConstructingParser.mkAttributes(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParserCommon$class.xTag(MarkupParserCommon.scala:44)
	at scala.xml.parsing.ConstructingParser.xTag(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:553)
	at scala.xml.parsing.ConstructingParser.element1(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:418)
	at scala.xml.parsing.ConstructingParser.content1(ConstructingParser.scala:47)
	at scala.xml.parsing.MarkupParser$class.document(MarkupParser.scala:239)
	at scala.xml.parsing.ConstructingParser.document(ConstructingParser.scala:47)
	at .<init>(<console>:17)
	at .<clinit>(<console>)
	at .<init>(<console>:7)
	at .<clinit>(<console>)
	at $print(<console>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions