scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
230 stars 21 forks source link

NegativeArraySizeException when Seq().size method called #12916

Closed mehmetbutgul closed 7 months ago

mehmetbutgul commented 7 months ago

I couldn't manage to reproduce this error. Because Seq() length can change according to client inputs. I guess, this error is related to creating a new index array in Scala source code.

  trait FlatMapped[B] extends super.FlatMapped[B] with Transformed[B] {
    protected[this] lazy val index = {
      val index = new Array[Int](self.length + 1)
      index(0) = 0
      for (i <- 0 until self.length) // note that if the mapping returns a list, performance is bad, bad
        index(i + 1) = index(i) + mapping(self(i)).seq.size
      index
    }

Scala version: 2.12.14 and 2.12.18

scala> val seq = Seq(...,...,...)
seq.size

it throws an java.lang.NegativeArraySizeException

it should return the length of the Seq or throw a logical exception.

The stack of the error:

2.12.18 Caused by: java.lang.NegativeArraySizeException: -1999119359 at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) at scala.collection.SeqViewLike$Mapped.length(SeqViewLike.scala:69) at scala.collection.SeqViewLike$Mapped.length$(SeqViewLike.scala:69) at scala.collection.SeqViewLike$$anon$4.length(SeqViewLike.scala:199) at scala.collection.SeqViewLike$Mapped.length(SeqViewLike.scala:69) at scala.collection.SeqViewLike$Mapped.length$(SeqViewLike.scala:69) at scala.collection.SeqViewLike$$anon$4.length(SeqViewLike.scala:199) at scala.collection.SeqLike.size(SeqLike.scala:108) at scala.collection.SeqLike.size$(SeqLike.scala:108) at scala.collection.SeqViewLike$AbstractTransformed.size(SeqViewLike.scala:40)

2.12.14

Caused by: java.lang.NegativeArraySizeException: -855113727 at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike$$anon$2.length(SeqLike.scala:685) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index(SeqViewLike.scala:75) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.index$(SeqViewLike.scala:74) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index$lzycompute(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.index(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$FlatMapped.length$(SeqViewLike.scala:87) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$5.length(SeqViewLike.scala:200) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Mapped.length(SeqViewLike.scala:69) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Mapped.length$(SeqViewLike.scala:69) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$4.length(SeqViewLike.scala:199) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Mapped.length(SeqViewLike.scala:69) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Mapped.length$(SeqViewLike.scala:69) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$4.length(SeqViewLike.scala:199) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Filtered.index(SeqViewLike.scala:113) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Filtered.index$(SeqViewLike.scala:111) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$6.index$lzycompute(SeqViewLike.scala:201) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$6.index(SeqViewLike.scala:201) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Filtered.length(SeqViewLike.scala:121) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$Filtered.length$(SeqViewLike.scala:121) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$$anon$6.length(SeqViewLike.scala:201) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike.size(SeqLike.scala:108) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqLike.size$(SeqLike.scala:108) ~[scala-library-2.12.14.jar:?] at scala.collection.SeqViewLike$AbstractTransformed.size(SeqViewLike.scala:40) ~[scala-library-2.12.14.jar:?]

Clients use lots of data when facing this error.
Maybe, I am using scala-library-2.12.15 when writing my source code. But clients use different versions [2.12.14 and 2.12.18] I am not sure that is it related to this. Or is there any bug here? @SethTisue

SethTisue commented 7 months ago

please use https://users.scala-lang.org for questions. come to scala/bug when you are reasonably certain the root cause of your problem is a bug in Scala, you can make a case to that effect, and you know that the bug is reproducible in the current Scala 2 version (namely 2.12.18 or 2.13.12 — we don't keep 2.12-only tickets open, but they can be useful as documentation, and we do accept 2.12 PRs)

sorry but we don't use our bug tracker like this — questions that might possibly be Scala bugs

SethTisue commented 7 months ago

P.S. It's nice that I apparently have a reputation for being helpful, but that doesn't mean it's appropriate to @-mention me on a ticket which has no special connection to me personally, and which I might have time to give attention to, or I might not. I can only respond to small proportion of tickets and user questions, and I will choose which ones. (Unless you have a Lightbend support contract? In which case, please open a support request by that route.)

mehmetbutgul commented 7 months ago

Thanks for your comments. You are such kind. Sorry If I have disturbed you. By the way, yes, you clearly have a reputation for being helpful.

SethTisue commented 7 months ago

Thank you. Sorry to scold. I hope you can get some help on a forum or chat room. (Perhaps from me, even.)