Skip to content

Commit c17d7ec

Browse files
EnzeXinglrytz
andcommitted
Add test and fix for initialization cycle
Co-authored-by: Lukas Rytz <[email protected]>
1 parent 41c795e commit c17d7ec

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/library/scala/collection/immutable/Vector.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ object Vector extends StrictOptimizedSeqFactory[Vector] {
8181
}
8282

8383
private val defaultApplyPreferredMaxLength: Int =
84-
try System.getProperty("scala.collection.immutable.Vector.defaultApplyPreferredMaxLength",
85-
"250").toInt
84+
// explicit StringOps to avoid initialization cycle with Predef (scala/bug#13009)
85+
try new StringOps(System.getProperty("scala.collection.immutable.Vector.defaultApplyPreferredMaxLength",
86+
"250")).toInt
8687
catch {
8788
case _: SecurityException => 250
8889
}

test/files/run/deadlock.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
object Test extends App {
2+
val createPredef = new Runnable {
3+
def run = {
4+
val _ = Predef;
5+
}
6+
}
7+
val createVector = new Runnable {
8+
def run = {
9+
val _ = scala.collection.immutable.Vector;
10+
}
11+
}
12+
val t1 = new Thread(createPredef)
13+
val t2 = new Thread(createVector)
14+
t1.start()
15+
t2.start()
16+
t1.join()
17+
t2.join()
18+
}

0 commit comments

Comments
 (0)