2012-02-14 16 views
5

Proguard si blocca con "Proguard restituito con il codice di errore 1", e questo incidente nella console:Proguard: IllegalArgumentException: Pile hanno dimensioni diverse correnti

java.lang.IllegalArgumentException: Stacks have different current sizes [0] and [1] 
at proguard.evaluation.Stack.generalize(Stack.java:125) 
at proguard.evaluation.TracedStack.generalize(TracedStack.java:140) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:683) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:587) 
at proguard.optimize.evaluation.PartialEvaluator.visitExceptionInfo(PartialEvaluator.java:1078) 
at proguard.classfile.visitor.ExceptionHandlerFilter.visitExceptionInfo(ExceptionHandlerFilter.java:67) 
at proguard.classfile.attribute.CodeAttribute.exceptionsAccept(CodeAttribute.java:186) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateExceptionHandlers(PartialEvaluator.java:1018) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:567) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:264) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:181) 
at proguard.optimize.evaluation.LivenessAnalyzer.visitCodeAttribute(LivenessAnalyzer.java:205) 
at proguard.optimize.evaluation.VariableOptimizer.visitCodeAttribute(VariableOptimizer.java:105) 
at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95) 
at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91) 
at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47) 
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116) 
at proguard.optimize.Optimizer.execute(Optimizer.java:833) 
at proguard.ProGuard.optimize(ProGuard.java:306) 
at proguard.ProGuard.execute(ProGuard.java:115) 
at proguard.ProGuard.main(ProGuard.java:492) 

mi sono limitata ad un blocco try cattura per una IOException. Se commento che provi a bloccare il blocco, viene visualizzato questo errore per un'altra IOException che tenta di bloccare il blocco altrove nell'app. Se commento quello fuori, poi costruisce con successo.

Quindi, in entrambi i casi, proguard sembra bloccarsi su un blocco catch di IOException. Questi blocchi sono stati inseriti nel codice in versioni precedenti che sono passati attraverso proguard senza alcun problema prima.

Inoltre, ci sono altri blocchi catch IOException che non danno alcun errore.

Ho provato questo con proguard 4.5, 4.6 e 4.7 e tutti falliti.

Qualche idea?

Grazie

risposta

8

Questo sembra essere un bug in ProGuard. Puoi loggarlo su ProGuard's bug tracker, preferibilmente con un piccolo test case che mi permetta di riprodurre il problema, oppure puoi farlo a mail it (Eric, sviluppatore di ProGuard).

Per il momento, è possibile aggirare il problema disattivando l'ottimizzazione (con l'opzione -dontoptimize).

+0

Prima di tutto, grazie mille per Proguard, è veramente impressionante e facile da usare. Sono andato avanti e ho presentato un bug. Per rendere questo post completo di overflow dello stack, ecco il link https://sourceforge.net/tracker/?func=detail&aid=3487940&group_id=54750&atid=474704 Grazie ancora. – cottonBallPaws

+0

succede ancora con ProGuard versione 5.2.1 :-( –

+0

5.3.3 anche. Qual è la soluzione qui? – batmaci

0

Stavo ricevendo questo errore per proguard 5.3.3 sul progetto di moduli xamarin. il mio problema era che stavo avendo file mancanti nella mia cartella proguard perché quando si scarica una versione di proguard dal proprio sito Web, non si hanno questi file txt nello zip scaricato. È sempre meglio fare il backup del tuo vecchio proguard e copiare questi file da lì o puoi semplicemente creare manualmente credo.

enter image description here

Problemi correlati