Skip to main content

TVM Exit codes

If TVM exits with an arbitrary 16-bit unsigned integer exit_code. exit_code higher than 1, it is considered to be an error code, therefore an exit with such a code may cause the transaction to revert/bounce.

Standard exit codes

  • 0 - Standard successful execution exit code.
  • 1 - Alternative successful execution exit code.
  • 2 - Stack underflow. Last op-code consumed more elements than there are on the stacks. 1
  • 3 - Stack overflow. More values have been stored on a stack than allowed by this version of TVM.
  • 4 - Integer overflow. Integer does not fit into −2256 ≤ x < 2256 or a division by zero has occurred.
  • 5 - Integer out of expected range.
  • 6 - Invalid opcode. Instruction is unknown in the current TVM version.
  • 7 - Type check error. An argument to a primitive is of an incorrect value type. 1
  • 8 - Cell overflow. Writing to builder is not possible since after operation there would be more than 1023 bits or 4 references.
  • 9 - Cell underflow. Read from slice primitive tried to read more bits or references than there are.
  • 10 - Dictionary error. Error during manipulation with dictionary (hashmaps).
  • 11 - Most oftenly caused by trying to call get-method whose id wasn't found in the code (missing method_id modifier or wrong get-method name specified when trying to call it). In TVM docs its described as "Unknown error, may be thrown by user programs".
  • 12 - Thrown by TVM in situations deemed impossible.
  • 13 - Out of gas error. Thrown by TVM when the remaining gas becomes negative.
  • 32 - Action list is invalid. Set during action phase if c5 register after execution contains unparsable object.
  • 32 (the same as prev) - Method ID not found. Returned by TonLib during an attempt to execute non-existent get method.
  • 34 - Action is invalid or not supported. Set during action phase if current action cannot be applied.
  • 37 - Not enough TON. Message sends too much TON (or there is not enough TON after deducting fees).
  • 38 - Not enough extra-currencies.
  • -14 - It means out of gas error, same as 13. Negative, because it cannot be faked
1 If you encounter such exception in a _func_ contract it probably means a type error in `asm` declarations.