diff options
| author | Jim Lawson | 2019-03-26 15:44:04 -0700 |
|---|---|---|
| committer | GitHub | 2019-03-26 15:44:04 -0700 |
| commit | 73fdf2be93ea0378a6aef5e6bd0b7e7730bc7ebb (patch) | |
| tree | fb383ca6233e073073c6255282755e511112bcbc /chiselFrontend/src/main/scala/chisel3/internal/Builder.scala | |
| parent | 50bbf973b4d631e14bd3cf40fa9dfe39a5c3d2e4 (diff) | |
Try to eliminate JVM hang due to static initialization deadlock (#1053)
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/internal/Builder.scala')
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/internal/Builder.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala index dfda0023..4105a699 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala @@ -200,7 +200,14 @@ private[chisel3] object Builder { // Initialize any singleton objects before user code inadvertently inherits them. private def initializeSingletons(): Unit = { - val dummy = core.DontCare + // This used to contain: + // val dummy = core.DontCare + // but this would occasionally produce hangs dues to static initialization deadlock + // when Builder initialization collided with chisel3.package initialization of the DontCare value. + // See: + // http://ternarysearch.blogspot.com/2013/07/static-initialization-deadlock.html + // https://bugs.openjdk.java.net/browse/JDK-8037567 + // https://stackoverflow.com/questions/28631656/runnable-thread-state-but-in-object-wait } def namingStackOption: Option[internal.naming.NamingStack] = dynamicContextVar.value.map(_.namingStack) |
