Menu ▾ ▴

#578 Inconsistent stack map frames in 5.2.1

v5.2
open
None
5
2017-09-11
2015-07-29
No

I'm using proguard 5.2.1 with jdk1.7.0_80 and got that problem:

Exception in thread "AWT-EventQueue-0" java.lang.VerifyError: Inconsistent stack
map frames at branch target 70
Exception Details:
Location:
myproduct/aic.<init>(Lmyproduct/agw;Lmyproduct/aic$a;)V @70: new
Reason:
Current frame's flags are not assignable to stack map frame's.
Current Frame:
bci: @12
flags: { flagThisUninit }
locals: { uninitializedThis, 'myproduct/aic$a', 'myproduct/aic$a' }
stack: { uninitializedThis, 'myproduct/agw', integer }
Stackmap Frame:
bci: @70
flags: { }
locals: { }
stack: { uninitializedThis, 'myproduct/agw' }
Bytecode:
0000000: 2a2b 2c4c b200 262b b600 422e aa00 0000
0000010: 0000 003a 0000 0001 0000 0003 0000 001c
0000020: 0000 0026 0000 0030 bb00 0a59 b700 33a7
0000030: 0021 bb00 0c59 b700 34a7 0017 bb00 0d59
0000040: b700 36a7 000d bb00 1f59 1204 b700 46bf
0000050: b700 40b1
Stackmap Table:
full_frame(@40,{UninitializedThis},{UninitializedThis,Object[#23]})
full_frame(@50,{UninitializedThis},{UninitializedThis,Object[#23]})
full_frame(@60,{UninitializedThis},{UninitializedThis,Object[#23]})
full_frame(@70,{},{UninitializedThis,Object[#23]})
full_frame(@80,{UninitializedThis},{UninitializedThis,Object[#23],Object[#11]
})</init>

    at myproduct.aha.a(SourceFile:202)
    at myproduct.aha.a(SourceFile:82)
    at myproduct.zj.c(SourceFile:62)
    at myproduct.zz.actionPerformed(SourceFile:96)

Related

Bugs: #11
Bugs: #23

Discussion

  • Eric Lafortune

    Eric Lafortune - 2015-07-29

    Thanks for your report. ProGuard's preverification seems to fail on some code in the constructor of myproduct.aic. You can probably see the same problem more clearly without obfuscation (-dontobfuscate). If you could attach or mail me a small sample project that allows me to reproduce the issue, I'll look into it.

     
  • Eric Lafortune

    Eric Lafortune - 2015-07-29
    • assigned_to: Eric Lafortune
     
  • Denis Ballant

    Denis Ballant - 2015-08-27

    Hi Eric,

    I'm back from vacation. So I tried building without obfuscation (-dontobfuscate). Now I can't even start the application produced by proguard. It says:

    Exception in thread "AWT-EventQueue-0" java.lang.ClassFormatError: LVTT entry for 'guiPlatformScriptSelected' in class file com/cwsoft/testframework/gui/view/explorer/ExplorerPanel does not match any LVT entry
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

    guiPlatformScriptSelected is a variable declared in a method of the ExplorerPanel class:
    GuiPlatformScript<? extends PlatformScript> guiPlatformScriptSelected = (GuiPlatformScript<? extends PlatformScript>)guiTestScenarioStepSelected;

    Denis

     
  • Denis Ballant

    Denis Ballant - 2015-10-15

    Any news on this problem Eric ?

     
  • Eric Lafortune

    Eric Lafortune - 2015-10-15

    I can't do much without a small sample project that allows me to reproduce the problem... The original problem is a fundamental issue in the processed bytecode of myproduct.aic. The second problem is probably unrelated -- occasionally the optimization step can't properly update the local variable type table when optimizing the code, but this is only debug information that the obfuscation step generally removes.

     
  • seahen

    seahen - 2017-09-11

    I have another example of what looks like this same bug, at https://travis-ci.org/Pr0methean/BetterRandom/jobs/274079470 (this updated link shows it's still happening in 5.3.3).

     

    Last edit: seahen 2017-09-11

Log in to post a comment.