bug icon indicating copy to clipboard operation
bug copied to clipboard

"Bad superClass for class” crash

Open Blaisorblade opened this issue 7 years ago • 4 comments

Define and compile object Boxing, then load in a scala REPL (e.g. sbt console) and type

scala> val v: Boxing = Boxing
<console>:11: error: type mismatch;
 found   : Boxing.type
 required: Boxing
       val v: Boxing = Boxing
                       ^

That's strange—it mentions type Boxing tho it doesn't exist. Maybe because a valid but member-less Boxing.class has been created? But OK. For the crash, try this:

val v: Boxing = null

Error at https://gist.github.com/Blaisorblade/83f7b997269a080890576c7a738f6972. Highlights:

java.lang.AssertionError: assertion failed:
  Bad superClass for class Boxing: <none>
     while compiling: <console>
        during phase: jvm
[...]
	at scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:163)
	at scala.tools.nsc.backend.jvm.BTypesFromSymbols.computeClassInfo(BTypesFromSymbols.scala:321)
	at scala.tools.nsc.backend.jvm.BTypesFromSymbols.$anonfun$classBTypeFromSymbol$6(BTypesFromSymbols.scala:107)
	at scala.tools.nsc.backend.jvm.BTypes$ClassBType$.apply(BTypes.scala:816)
	at scala.tools.nsc.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol(BTypesFromSymbols.scala:104)
	at scala.tools.nsc.backend.jvm.BTypesFromSymbols.$anonfun$typeToBType$1(BTypesFromSymbols.scala:158)
[...]
java.lang.AssertionError: assertion failed: ClassBType.info not yet assigned: L$line2/$read$$iw$$iw$;
	at scala.tools.nsc.backend.jvm.BTypes$ClassBType.info(BTypes.scala:629)
	at scala.tools.nsc.backend.jvm.BTypes$ClassBType.isNestedClass(BTypes.scala:681)
	at scala.tools.nsc.backend.jvm.BTypes$ClassBType.enclosingNestedClassesChain(BTypes.scala:684)
	at scala.tools.nsc.backend.jvm.analysis.BackendUtils.$anonfun$addInnerClasses$1(BackendUtils.scala:361)
	at scala.tools.nsc.backend.jvm.analysis.BackendUtils.addInnerClasses(BackendUtils.scala:361)
	at scala.tools.nsc.backend.jvm.PostProcessor.setInnerClasses(PostProcessor.scala:125)
[...]

Blaisorblade avatar Aug 27 '18 21:08 Blaisorblade

This seems to need the REPL — even compiling separately the following (which is the desugaring output from the REPL according to its output) doesn't trigger the crash:

object $iw {
  object $iw {
    val v: Boxing = null
  }
}

Blaisorblade avatar Aug 27 '18 21:08 Blaisorblade

Also requires the object in the empty package.

som-snytt avatar Aug 28 '18 02:08 som-snytt

ohhhhhhhh good call @som-snytt. (why didn't I think of that?)

SethTisue avatar Aug 28 '18 03:08 SethTisue

We are running into this issue randomly with Bad superClass for class Any: <none> occurring randomly at various places in the codebase. One example stacktrace:

[info] compiling 64 Scala sources to /home/runner/work/lucuma-core/lucuma-core/modules/testkit/.jvm/target/scala-2.13/classes ...
[error] Error while emitting PlanetSpectrum.scala
[error] assertion failed: 
[error]   Bad superClass for class Any: <none>
[error]      while compiling: /home/runner/work/lucuma-core/lucuma-core/modules/core/shared/src/main/scala/lucuma/core/enum/PlanetSpectrum.scala
[error]         during phase: globalPhase=jvm, enteringPhase=uncurry
[error]      library version: version 2.13.7
[error]     compiler version: version 2.13.7
[error]   reconstructed args: -bootclasspath /home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.7/scala-library-2.13.7.jar -deprecation -encoding utf8 -explaintypes -feature -unchecked -Werror -Wconf:cat=deprecation:w -Wconf:cat=unchecked:w -Wconf:cat=feature:w -Wconf:cat=deprecation:ws -Wconf:cat=feature:ws -Wconf:cat=optimizer:ws -Wdead-code -Wvalue-discard -Wnumeric-widen -Wunused:imports -Wunused:patvars -Wunused:privates -Wunused:locals -Wunused:explicits -Wunused:implicits -Wunused:synthetics -Wunused:nowarn -Wextra-implicit -Xlint:adapted-args -Xlint:nullary-unit -Xlint:inaccessible -Xlint:infer-any -Xlint:missing-interpolator -Xlint:doc-detached -Xlint:private-shadow -Xlint:type-parameter-shadow -Xlint:poly-implicit-overload -Xlint:option-implicit -Xlint:delayedinit-select -Xlint:package-object-classes -Xlint:stars-align -Xlint:strict-unsealed-patmat -Xlint:constant -Xlint:deprecation -classpath /home/runner/work/lucuma-core/lucuma-core/modules/core/js/target/scala-2.13/classes:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-library_2.13/1.8.0/scalajs-library_2.13-1.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tpolecat/atto-core_sjs1_2.13/0.9.5/atto-core_sjs1_2.13-0.9.5.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tpolecat/atto-refined_sjs1_2.13/0.9.5/atto-refined_sjs1_2.13-0.9.5.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-core_sjs1_2.13/2.7.0/cats-core_sjs1_2.13-2.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-core_sjs1_2.13/3.1.0/monocle-core_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-macro_sjs1_2.13/3.1.0/monocle-macro_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/optics/monocle-state_sjs1_2.13/3.1.0/monocle-state_sjs1_2.13-3.1.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/lucuma-jts_sjs1_2.13/0.2.2/lucuma-jts_sjs1_2.13-0.2.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb_sjs1_2.13/0.5.7/coulomb_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-si-units_sjs1_2.13/0.5.7/coulomb-si-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-accepted-units_sjs1_2.13/0.5.7/coulomb-accepted-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-time-units_sjs1_2.13/0.5.7/coulomb-time-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-cats_sjs1_2.13/0.5.7/coulomb-cats_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-refined_sjs1_2.13/0.5.7/coulomb-refined_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-physical-constants_sjs1_2.13/0.5.7/coulomb-physical-constants_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire_sjs1_2.13/0.17.0/spire_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-extras_sjs1_2.13/0.17.0/spire-extras_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/singleton-ops_sjs1_2.13/0.5.2/singleton-ops_sjs1_2.13-0.5.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/refined_sjs1_2.13/0.9.28/refined_sjs1_2.13-0.9.28.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/eu/timepit/refined-cats_sjs1_2.13/0.9.28/refined-cats_sjs1_2.13-0.9.28.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-time_sjs1_2.13/0.5.0/cats-time_sjs1_2.13-0.5.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-core_sjs1_2.13/0.14.1/circe-core_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-refined_sjs1_2.13/0.14.1/circe-refined_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_sjs1_2.13/2.3.7/shapeless_sjs1_2.13-2.3.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/scala-java-time_sjs1_2.13/2.3.0/scala-java-time_sjs1_2.13-2.3.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/gemini-locales_sjs1_2.13/0.7.0/gemini-locales_sjs1_2.13-0.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/gemini/lucuma-svgdotjs_sjs1_2.13/0.2.1/lucuma-svgdotjs_sjs1_2.13-0.2.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-kernel_sjs1_2.13/2.7.0/cats-kernel_sjs1_2.13-2.7.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/simulacrum-scalafix-annotations_2.13/0.5.4/simulacrum-scalafix-annotations_2.13-0.5.4.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/cats-free_sjs1_2.13/2.6.1/cats-free_sjs1_2.13-2.6.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.7/scala-reflect-2.13.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/manyangled/coulomb-mks-units_sjs1_2.13/0.5.7/coulomb-mks-units_sjs1_2.13-0.5.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-macros_sjs1_2.13/0.17.0/spire-macros_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-platform_sjs1_2.13/0.17.0/spire-platform_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-util_sjs1_2.13/0.17.0/spire-util_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_sjs1_2.13/2.2.0/scala-collection-compat_sjs1_2.13-2.2.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/algebra_sjs1_2.13/2.0.1/algebra_sjs1_2.13-2.0.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/spire-data_sjs1_2.13/0.17.0/spire-data_sjs1_2.13-0.17.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.7/scala-compiler-2.13.7.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/1.3.0/scala-xml_2.13-1.3.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/circe/circe-numbers_sjs1_2.13/0.14.1/circe-numbers_sjs1_2.13-0.14.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/portable-scala/portable-scala-reflect_sjs1_2.13/1.1.1/portable-scala-reflect_sjs1_2.13-1.1.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/scala-java-locales_sjs1_2.13/1.2.0/scala-java-locales_sjs1_2.13-1.2.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-dom_sjs1_2.13/2.0.0/scalajs-dom_sjs1_2.13-2.0.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/olvind/scalablytyped-runtime_sjs1_2.13/2.4.2/scalablytyped-runtime_sjs1_2.13-2.4.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.20.0/jline-3.20.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.8.0/jna-5.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/cquiroz/cldr-api_sjs1_2.13/2.7.0/cldr-api_sjs1_2.13-2.7.0.jar -language:existentials -language:higherKinds -language:implicitConversions -language:experimental.macros -Xmaxerrs -1 -Xmaxwarns -1 -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/kind-projector_2.13.7/0.13.2/kind-projector_2.13.7-0.13.2.jar -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-compiler_2.13.7/1.8.0/scalajs-compiler_2.13.7-1.8.0.jar -Xplugin:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.7/4.4.30/semanticdb-scalac_2.13.7-4.4.30.jar -Yrangepos -Ymacro-annotations -Vimplicits -Vtype-diffs -P:semanticdb:targetroot:/home/runner/work/lucuma-core/lucuma-core/modules/core/js/target/scala-2.13/meta
[error] 
[error]   last tree to typer: TypeTree(class Long)
[error]        tree position: line 85 of /home/runner/work/lucuma-core/lucuma-core/modules/core/shared/src/main/scala/lucuma/core/util/Gid.scala
[error]             tree tpe: Long
[error]               symbol: final class Long in package lang
[error]    symbol definition: final class Long extends Number with Comparable[Long] with Constable with ConstantDesc (a ClassSymbol)
[error]       symbol package: java.lang
[error]        symbol owners: class Long
[error]            call site: method serialized in trait TypeString in package util
[error] 
[error] == Source file context for tree position ==
[error] 
[error]     82   }
[error]     83 
[error]     84   final val fromLong: Prism[Long, A] =
[error]     85     Prism[Long, A](l => PosLong.from(l).toOption.map(isoPosLong.reverseGet))(a =>
[error]     86       isoPosLong.get(a).value
[error]     87     )
[error]     88 
[error] one error found

I realize this isn't actionable yet but I will add clues here as they show up.

tpolecat avatar Jan 04 '22 16:01 tpolecat