4

This question already has an answer here:

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
150918c4ddfaabf93c18d6c41aaa2682c5cdbc0a9a9a6a2853/cb611bab0cd7c4f21f7cb0b91ad45
f1330995289:13717
    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?

EDIT:

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

marked as duplicate by Richard Horrocks, Badr Bellaj, Matthew Schmidt, Tjaden Hess, Bokky WeAreAllAssange PooBah Jan 12 '17 at 8:23

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 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
4

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.