Analyzer Exception from compiler

Hi,

I’m getting an exception from the compiler (see below), but no explanation as to what the exception means, or how to fix it.

The code of saveTypesCallback is:

  def saveTypesCallback(data: String): JsCmd = {
    val key = beginTrans(logger)
    securityLogger.debug("[ServerStatus$.saveTypesCallback] data is: {}", data)

    var result: JsCmd = Noop

    var session: EDBSession = null

    try {
      logger.trace("[ServerStatus$.saveTypesCallback] data: {}", data)
      val rawRecords = data.split(";")

      val user = getUser
      if (user == null) return Noop

      val typeList = getTypeList(user.getContext)

      session = dbSessionFactory.createSession match {
        case Left(message) =>
          logger.error("[ServerStatus$.saveTypesCallback] unable to get session for persistent store, message: {}", message)
          return Noop
        case Right(s) => s
      }

      var count = 0
      rawRecords.foreach((raw) => count += doOneTypeRecord(user.getContext, session, typeList, raw))
      result = JsCmds.Alert("Records updated: " + count)
    } catch {
      case e: Exception => logger.error("[ServerStatus$.saveTypesCallback] ", e)
    } finally {
      if (session != null) session.close()
    }

    endTrans(logger, key)
    result
  }
scala.tools.asm.tree.analysis.AnalyzerException: While processing edu/stsci/laoi/snippet/ServerStatus$.saveTypesCallback
	at scala.tools.nsc.backend.jvm.analysis.BackendUtils$AsmAnalyzer.<init>(BackendUtils.scala:40)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.removeUnreachableCodeImpl(LocalOpt.scala:488)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.removalRound$2(LocalOpt.scala:275)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.methodOptimizations(LocalOpt.scala:354)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.$anonfun$methodOptimizations$1(LocalOpt.scala:195)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.$anonfun$methodOptimizations$1$adapted(LocalOpt.scala:194)
	at scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:157)
	at scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:157)
	at scala.collection.Iterator.foreach(Iterator.scala:929)
	at scala.collection.Iterator.foreach$(Iterator.scala:929)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1406)
	at scala.collection.IterableLike.foreach(IterableLike.scala:71)
	at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableOnce.foldLeft(TraversableOnce.scala:157)
	at scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:155)
	at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)
	at scala.tools.nsc.backend.jvm.opt.LocalOpt.methodOptimizations(LocalOpt.scala:194)
	at scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker2.$anonfun$localOptimizations$1(GenBCode.scala:248)
	at scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker2.localOptimizations(GenBCode.scala:248)
	at scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker2.run(GenBCode.scala:267)
	at scala.tools.nsc.backend.jvm.GenBCode$BCodePhase.buildAndSendToDisk(GenBCode.scala:384)
	at scala.tools.nsc.backend.jvm.GenBCode$BCodePhase.run(GenBCode.scala:350)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1418)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1403)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1398)
	at scala.tools.nsc.Global$Run.compile(Global.scala:1492)
	at scala.tools.ant.Scalac.executeInternal(Scalac.scala:682)
	at scala.tools.ant.Scalac.execute(Scalac.scala:630)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:435)
	at org.apache.tools.ant.Target.performTasks(Target.java:456)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
	at org.apache.tools.ant.Main.runBuild(Main.java:857)
	at org.apache.tools.ant.Main.startAnt(Main.java:236)
	at org.apache.tools.ant.Main.start(Main.java:199)
	at org.apache.tools.ant.Main.main(Main.java:287)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)
Caused by: scala.tools.asm.tree.analysis.AnalyzerException: Error at instruction 71: Incompatible stack heights
	at scala.tools.asm.tree.analysis.Analyzer.analyze(Analyzer.java:299)
	at scala.tools.nsc.backend.jvm.analysis.BackendUtils$AsmAnalyzer.<init>(BackendUtils.scala:37)
	... 49 more
Caused by: scala.tools.asm.tree.analysis.AnalyzerException: Incompatible stack heights
	at scala.tools.asm.tree.analysis.Frame.merge(Frame.java:701)
	at scala.tools.asm.tree.analysis.Analyzer.merge(Analyzer.java:512)
	at scala.tools.asm.tree.analysis.Analyzer.analyze(Analyzer.java:219)
	... 50 more
error: Error while emitting edu/stsci/laoi/snippet/ServerStatus$
While processing edu/stsci/laoi/snippet/ServerStatus$.saveTypesCallback

This is almost certainly an instance of https://github.com/scala/bug/issues/10183.

Unfortunately this bug is difficult to fix. You can work around it by avoiding multiple return statements within try blocks.

Thanks Irytz!

I thought it might be something like that. When I tried a Google search, I didn’t find anything, including that issue so I figured it couldn’t hurt to ask.