There are a number of questions relating to the invalid JUMP error.

I get this when debugging a solidiy contract on the testrpc with geth command line:

Error: VM Exception while processing transaction: invalid JUMP at 3802e3b6eefb98
    at web3.js:3119:20
    at web3.js:6023:15
    at web3.js:4995:36
    at web3.js:4055:16
    at apply (<native code>)
    at web3.js:4141:16
    at <anonymous>:1:1

Can you explain the invlid JUMP error - what is going wrong at the Virtual Machine opcode level?

What approach should you use when finding the source of such errors?

Is this error unique to go-ethereum?


The question is answered here:

What does a "bad JUMPDEST" error mean?

What is the distinction, if any, between the above invlaid JUMP and that question's bad JUMPDEST?

Other questions:

oraclize 'VM Exception: invalid JUMP'

VM Exception: invalid JUMP when I call a second function

invalid JUMP after upgrading truffle & testrpc

Invalid jump destination error when attempting to transfer The DAO tokens

  • That's what I was thinking. – Richard Horrocks Jan 11 '17 at 13:10
  • @eth yes that's a good answer. I'm guessing "invalid JUMP" is geth's wrapper for "bad JUMPDEST" in that question? – atomh33ls Jan 11 '17 at 13:13
  • 2
    Yes, they are the same thing – Tjaden Hess Jan 11 '17 at 17:33

That's actually testrpc's error message. If a transaction throws in geth, it'll treat it as an out-of-gas error and won't tell you. (This is because it technically is an out-of-gas error.)

Unfortunately there's not many current debugging tools. Browser-Solidity has one. My own method of debugging this kind of is rather shotgun-y. Slowly comment/return early until you don't get an invalid JUMP. If you've commented the whole function, it might be a function being paid without being payable.

| improve this answer | |
