Error: java.lang.IllegalArgumentException: Stacks have different current...
Java class file shrinker, optimizer, obfuscator, and preverifier
Brought to you by:
guardsquare
ProGuard, version 6.0 beta2
Reading program jar [/Users/tianxiaogu/Dropbox/ProGuard/proguard-20180126125237/C0-injars.jar]
Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/rt.jar]
Note: you're ignoring all warnings!
Unexpected error while performing partial evaluation:
Class = [C0]
Method = [main([Ljava/lang/String;)V]
Exception = [java.lang.IllegalArgumentException] (Stacks have different current sizes [2] and [3])
Error: java.lang.IllegalArgumentException: Stacks have different current sizes [2] and [3]
This issue has a similar stack trace with #681. The difference is that it cannot be resolved by disabling tail recursion but by disabling all the following optimizations (automatically reduced by delta debugging).
field/propagation/value
method/propagation/parameter
method/propagation/returnvalue
code/simplification/advanced
-optimizations !field/propagation/value,!method/propagation/parameter,!method/propagation/returnvalue,!code/simplification/advanced
Thanks again for this detailed report. The artificially generated code contains some unusual constructs that confuse the optimizer. The root cause is similar as before: dup / dup2_x1 / branch constructs are not simplified as they should. The problem needs to be fixed, but it has a lower priority at this point. For the time being, in ProGuard 6.0, you can exclude such code from being optimized with: