-
-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Description
I've tried minimising this (reasonably) as much as I can (each step takes ages to test). With SBT set to use 1GB heap, a wiki consisting of the following page (and a small home page, but I'm sure that won't make the difference):
# Bla
@:callout(info)
* Bla
@:callout(warning)
* There is a bug that involves nesting and exponential growth:
* ```scala
val foo =
bar <**> Bar(bar)
```
```scala
val foo = Bar(bar, "bla" ~> bla <~ "bla")
```
`bar` **baz**.
* ```scala
val foo =
Bar(bar, "blaaa" ~> bla <~ "bla").label("bar")
```
Bla bla, bla bla bla bla bla, bla bla bla `bla` *bla* bla bla bla.
Bla bla bla bla bla.
Bla, bla `Bar` bla bla bla: `bar`;
bla blabla blabla bla bla bla bla _bla_ bla, bla bla bla bla **bla bla**
bla bla `bridge` bla bla blabla blablabla.
@:@
@:@Will crash with an out of memory error, consuming all 1GB of ram. The stack trace varies as the document size is altered, but the one constant is reference to BlockSource.reverse et al:
java.lang.OutOfMemoryError: Java heap space
at java.base/java.lang.StringBuilder.toString(StringBuilder.java:475)
at scala.collection.mutable.StringBuilder.toString(StringBuilder.scala:433)
at scala.collection.mutable.StringBuilder.result(StringBuilder.scala:449)
at scala.collection.mutable.StringBuilder.result(StringBuilder.scala:34)
at scala.collection.IndexedSeqOptimized.reverse(IndexedSeqOptimized.scala:226)
at scala.collection.IndexedSeqOptimized.reverse$(IndexedSeqOptimized.scala:218)
at scala.collection.immutable.StringOps.reverse(StringOps.scala:33)
at laika.parse.LineSource.reverse(SourceCursor.scala:229)
at laika.parse.BlockSource.$anonfun$reverse$1(SourceCursor.scala:341)
at laika.parse.BlockSource$$Lambda/0x0000776d75bd0000.apply(Unknown Source)
at scala.collection.immutable.List.map(List.scala:297)
at cats.data.Chain.map(Chain.scala:220)
at cats.data.NonEmptyChainOps$.map$extension(NonEmptyChain.scala:387)
at laika.parse.BlockSource.reverse(SourceCursor.scala:341)
at laika.parse.BlockSource.reverse(SourceCursor.scala:292)
at laika.parse.LineSource.reverse(SourceCursor.scala:229)
at laika.parse.BlockSource.$anonfun$reverse$1(SourceCursor.scala:341)
at laika.parse.BlockSource$$Lambda/0x0000776d75bd0000.apply(Unknown Source)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
at scala.collection.TraversableLike$$Lambda/0x0000776d741c3400.apply(Unknown Source)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.IterableLike.foreach(IterableLike.scala:74)
at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
at scala.collection.TraversableLike.map(TraversableLike.scala:286)
at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at cats.data.Chain.map(Chain.scala:220)
at cats.data.NonEmptyChainOps$.map$extension(NonEmptyChain.scala:387)
at laika.parse.BlockSource.reverse(SourceCursor.scala:341)
[error] [launcher] error during sbt launcher: java.lang.OutOfMemoryError: Java heap spaceThis seems like a pathological exponential blow up going on.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels