Menu

#627 Inconsistent stackmap frames at branch target

v5.3
open
nobody
None
7
2016-11-03
2016-11-03
Joe Pearce
No

This is occuring on a Mac when running under Oracle's Java 1.8.0_101 obfusticated with Proguard 5.3.

Error reported on console:

java.lang.VerifyError: Inconsistent stackmap frames at branch target 80
Exception Details:
Location:
com/arciem/app/AbstractApplication.a(Z)Z @80: goto
Reason:
Type 'com/arciem/app/aq' (current frame, locals[1]) is not assignable to integer (stack map, locals[1])
Current Frame:
bci: @19
flags: { }
locals: { 'com/arciem/app/AbstractApplication', 'com/arciem/app/aq' }
stack: { 'com/arciem/app/aq' }
Stackmap Frame:
bci: @80
flags: { }
locals: { 'com/arciem/app/AbstractApplication', integer }
stack: { }
Bytecode:
0x0000000: 2ab4 005d b900 e401 009a 004a 2a03 b600
0x0000010: 7859 4cc6 003d 2bb6 008e 594d c600 292c
0x0000020: b600 9e59 4dc6 0012 2c01 4c59 4c04 01b6
0x0000030: 00a6 9a00 1003 ac2a b400 5d2b b900 e702
0x0000040: 0057 a7ff be2a b400 5d2b b900 e702 0057
0x0000050: a7ff b02a b600 80b6 00d7 a700 0457 04ac
0x0000060:
Exception Handler Table:
bci [83, 90] => handler: 93
Stackmap Table:
same_frame(@0)
append_frame(@55,Object[#39])
chop_frame(@66,1)
append_frame(@69,Object[#39])
chop_frame(@80,1)
same_frame(@83)
full_frame(@93,{},{Object[#84]})
same_frame(@94)

at a.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.lang.VerifyError: Inconsistent stackmap frames at branch target 80
Exception Details:
Location:
com/arciem/app/AbstractApplication.a(Z)Z @80: goto
Reason:
Type 'com/arciem/app/aq' (current frame, locals[1]) is not assignable to integer (stack map, locals[1])
Current Frame:
bci: @19
flags: { }
locals: { 'com/arciem/app/AbstractApplication', 'com/arciem/app/aq' }
stack: { 'com/arciem/app/aq' }
Stackmap Frame:
bci: @80
flags: { }
locals: { 'com/arciem/app/AbstractApplication', integer }
stack: { }
Bytecode:
0x0000000: 2ab4 005d b900 e401 009a 004a 2a03 b600
0x0000010: 7859 4cc6 003d 2bb6 008e 594d c600 292c
0x0000020: b600 9e59 4dc6 0012 2c01 4c59 4c04 01b6
0x0000030: 00a6 9a00 1003 ac2a b400 5d2b b900 e702
0x0000040: 0057 a7ff be2a b400 5d2b b900 e702 0057
0x0000050: a7ff b02a b600 80b6 00d7 a700 0457 04ac
0x0000060:
Exception Handler Table:
bci [83, 90] => handler: 93
Stackmap Table:
same_frame(@0)
append_frame(@55,Object[#39])
chop_frame(@66,1)
append_frame(@69,Object[#39])
chop_frame(@80,1)
same_frame(@83)
full_frame(@93,{},{Object[#84]})
same_frame(@94)

at d.uncaughtException(Unknown Source)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1057)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1052)
at java.awt.EventDispatchThread.processException(EventDispatchThread.java:223)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:215)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception: java.lang.VerifyError thrown from the UncaughtExceptionHandler in thread "AWT-EventQueue-0"

Ant taskdef:

    <taskdef name="proguard" classname="proguard.ant.ProGuardTask"/>
    <proguard defaultpackage=""
              skipnonpubliclibraryclasses="false"
              overloadaggressively="false"
              ignorewarnings="true"
              printseeds="${obfus.seeds.file}"
              printmapping="${obfus.map.file}"
              printusage="${obfus.usage.file}"
              note="false"
              shrink="true"
              optimize="true"
              obfuscate="true"
                    >

        <!-- Specify the input jars, output jars, and library jars. -->
        <injar file="${jarfile.unsigned.no-obfus}"/>
        <outjar file="${jarfile.unsigned.obfus}"/>
        <libraryjar refid="obfus.jars"/>

        <!-- Preserve the application entry point -->
        <keepclasseswithmembers name="FlyingLogic" access="public">
            <method access="public static"
                    type="void"
                    name="main"
                    parameters="java.lang.String[]"/>
        </keepclasseswithmembers>

        <!-- Preserve all annotations. -->
        <keepattribute name="*Annotation*"/>

        <!-- Preserve all native method names and the names of their classes. -->
        <keepclasseswithmembernames>
            <method access="native"/>
        </keepclasseswithmembernames>

       ... mare more exceptions to obfustication here ...
       </proguard>
       </taskdef>

Related

Bugs: #39
Bugs: #84

Discussion


Log in to post a comment.

MongoDB Logo MongoDB