From d799a9162da02eb6033f5d7af5ea48849cd4232b Mon Sep 17 00:00:00 2001 From: Dmitry Petrashko Date: Wed, 19 Apr 2017 11:07:47 -0500 Subject: Fix the infinite cycle in Lazy Vlas Reported by Andrzej Plutecki in https://groups.google.com/forum/#!topic/dotty-internals/3LMNItLQw-A I haven't seen this happen in practice in hours and hours of benchmarking, but this is indeed a formal bug. --- library/src/dotty/runtime/LazyVals.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/src/dotty/runtime/LazyVals.scala b/library/src/dotty/runtime/LazyVals.scala index 4dea0d34d..9a7e153b0 100644 --- a/library/src/dotty/runtime/LazyVals.scala +++ b/library/src/dotty/runtime/LazyVals.scala @@ -55,7 +55,8 @@ object LazyVals { else if (state == 2) { val monitor = getMonitor(t, ord) monitor.synchronized { - monitor.wait() + if (STATE(cur, ord) == 2) + monitor.wait() } } else retry = false -- cgit v1.2.3