2015-06-25 18 views
16

Ho riscontrato questo errore per qualche ora. Totalmente irritato per questo. Ho provato tutte le soluzioni simili viste in StackOverflow e altri siti.la compilazione sbt causa l'errore StackOverflow

Ho 4 progetti scala separati. Di questi, sto ricevendo errore StackOverflow sulla compilazione di progetti di rimorchio. Questi due progetti sono i più grandi tra i 4 progetti. Viene visualizzato questo errore quando provo a creare il progetto in una macchina Ubuntu Server. Ho provato ad aumentare le opzioni Xmx nel file config di sbt, ma senza successo.

Qualcuno può aiutarmi per risolvere questo problema, perché sto impazzendo per questo. Se costruisco il progetto 10 volte, si otterrà 1 o 2 tentativi.

Quello che ho capito dal registro degli errori è che il problema si presenta con il controllo del tipo. Ma non ho idea di dove avvenga.

Uno dei progetti in errore ha più di 1000 classi/tratti (senza includere classi di casi).

Dettagli:

Ubuntu Server(14) 
Sbt : 0.13.6 and 0.13.8 tried 
Scala Version : 2.11.6 
JDK: 1.8 

Poche righe dell'errore è incollato sotto:

java.lang.StackOverflowError 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5472) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5480) 
    at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:642) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3163) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgWithFormal$1(PatternTypers.scala:112) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:46) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:44) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at scala.runtime.Tuple2Zipped$.map$extension(Tuple2Zipped.scala:44) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgsForFormals(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:111) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3469) 
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3494) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4544) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(E 
+1

È necessario modificare '-Xss'. Prova '-Xss3m' – jrudolph

+0

@jrudolph Dove devo apportare questa modifica? In sbtconfig.txt? o da qualche altra parte? –

+0

Allo stesso modo hai cambiato '-Xmx'. Proposto nel tuo script di avvio di sbt. – jrudolph

risposta

4

Questo è stato interessando Scala dal 2.11.4 fino a 2.11.6 afaik. Non appare come fisso sulle ultime note di rilascio per 2.11.7.

Fortunatamente dopo l'track sulla issue tracker è un duplicato ticket con una risposta qui su stack overflow

Senza il codice sorgente è più difficile da dare più indicazioni ma che dovrebbe sicuramente essere un buon indicatore per trovare il problema e applicare la soluzione proposta

+0

Sto usando un sacco di generici, ma come menzionato nel ticket, non ci siamo manifestati con Any. Ho provato tutte le impostazioni relative alla memoria, ma senza alcuna utilità. –

+0

Non hai detto che non hai manifestato.Ad ogni modo puoi provare a) cercare l'uso di 'Manifest' nelle librerie che potresti usare, è probabile che alcuni lo stiano usando b) Aggiorna il tuo progetto a Scala 2.11.7 c) Segnala il bug a scala-lang.org –

+0

Per essere chiari, sto usando Manifest in alcuni posti per la deserializzazione di JSON. Ad esempio: def extractEntity (json: String) (implicito m: Manifest [E]): E = parse (json) .extract [E], dove E è un tratto chiamato come BaseEntity con alcuni campi comuni (id, isActive etc) . Attualmente sto usando 2.11.6. Proverò con 2.11.7 e verificherò se il problema esiste. –

0

Ho provato tutte le modifiche di configurazione, ma non ho funzionato nella macchina. Quindi l'ho saltato per quasi un mese. Recentemente, ho provato a creare il progetto in Jenkins e ho ricevuto lo stesso errore. Poi ho aggiornato sbt 0.13.8 e aggiunto il flag jvm -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx1024M -Xss16M al flag di costruzione di jenkins. E finora, tutte le compilation hanno avuto successo. Ricordo di aver aggiunto il flag jvm al file di configurazione di sbt, ma ottenevo lo stesso errore. Ma ora, sta funzionando bene in jenkins dopo aver aggiunto quella bandiera.

Problemi correlati