Expecting a stackmap frame at branch target

Article ID:225066288
1 minute readKnowledge base

Issue

Seeing java.lang.VerifyError: Expecting a stackmap frame at branch target in the logs and / or Console output.

For example:

java.lang.VerifyError: Expecting a stackmap frame at branch target 29
Exception Details:
  Location:
    hudson/plugins/emailext/watching/EmailExtWatchAction$UserProperty.<init>(Ljava/util/List;)V @17: ifeq
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: 2ab7 0013 2abb 0015 59b7 0016 1202 b800
    0x0000010: 1a99 000c c000 1cb5 001f a700 06b5 0021
    0x0000020: 2bc6 001c 2a2b b800 2712 02b8 001a 9900
    0x0000030: 0cc0 001c b500 1fa7 0006 b500 21b1

  at hudson.plugins.emailext.watching.EmailExtWatchAction$UserProperty$DescriptorImpl.<init>(EmailExtWatchAction.java:55)

Environment

  • CloudBees Jenkins Enterprise

Resolution

This is an issue with the plugin. Look at the stacktrace in the logs to determine which plugin.

You have two options:

1) Disable the plugin (if possible) and report the issue on https://issues.jenkins.io/secure/Dashboard.jspa.

NOTE: This is the recommended option.

2) Disable JVM bytecode verifier.

NOTE: This is not recommended, as it disables strict verification, which is an important security consideration.

I would read this before considering this option.

If running Jenkins on Java 8, add:

-noverify

If running Jenkins on Java 7, add:

-XX:-UseSplitVerifier

See How to add Java arguments to Jenkins for how to do this.

This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.