Wasmtime
trap.h File Reference
#include <wasm.h>

Go to the source code of this file.

Typedefs

typedef uint8_t wasmtime_trap_code_t
 Code of an instruction trap. More...
 

Enumerations

enum  wasmtime_trap_code_enum {
  WASMTIME_TRAP_CODE_STACK_OVERFLOW , WASMTIME_TRAP_CODE_MEMORY_OUT_OF_BOUNDS , WASMTIME_TRAP_CODE_HEAP_MISALIGNED , WASMTIME_TRAP_CODE_TABLE_OUT_OF_BOUNDS ,
  WASMTIME_TRAP_CODE_INDIRECT_CALL_TO_NULL , WASMTIME_TRAP_CODE_BAD_SIGNATURE , WASMTIME_TRAP_CODE_INTEGER_OVERFLOW , WASMTIME_TRAP_CODE_INTEGER_DIVISION_BY_ZERO ,
  WASMTIME_TRAP_CODE_BAD_CONVERSION_TO_INTEGER , WASMTIME_TRAP_CODE_UNREACHABLE_CODE_REACHED , WASMTIME_TRAP_CODE_INTERRUPT , WASMTIME_TRAP_CODE_OUT_OF_FUEL ,
  WASMTIME_TRAP_CODE_ATOMIC_WAIT_NON_SHARED_MEMORY , WASMTIME_TRAP_CODE_NULL_REFERENCE , WASMTIME_TRAP_CODE_ARRAY_OUT_OF_BOUNDS , WASMTIME_TRAP_CODE_ALLOCATION_TOO_LARGE ,
  WASMTIME_TRAP_CODE_CAST_FAILURE , WASMTIME_TRAP_CODE_CANNOT_ENTER_COMPONENT , WASMTIME_TRAP_CODE_NO_ASYNC_RESULT , WASMTIME_TRAP_CODE_UNHANDLED_TAG ,
  WASMTIME_TRAP_CODE_CONTINUATION_ALREADY_CONSUMED , WASMTIME_TRAP_CODE_DISABLED_OPCODE , WASMTIME_TRAP_CODE_ASYNC_DEADLOCK , WASMTIME_TRAP_CODE_CANNOT_LEAVE_COMPONENT ,
  WASMTIME_TRAP_CODE_CANNOT_BLOCK_SYNC_TASK , WASMTIME_TRAP_CODE_INVALID_CHAR , WASMTIME_TRAP_CODE_DEBUG_ASSERT_STRING_ENCODING_FINISHED , WASMTIME_TRAP_CODE_DEBUG_ASSERT_EQUAL_CODE_UNITS ,
  WASMTIME_TRAP_CODE_DEBUG_ASSERT_POINTER_ALIGNED , WASMTIME_TRAP_CODE_DEBUG_ASSERT_UPPER_BITS_UNSET , WASMTIME_TRAP_CODE_STRING_OUT_OF_BOUNDS , WASMTIME_TRAP_CODE_LIST_OUT_OF_BOUNDS ,
  WASMTIME_TRAP_CODE_INVALID_DISCRIMINANT , WASMTIME_TRAP_CODE_UNALIGNED_POINTER
}
 Trap codes for instruction traps. More...
 

Functions

WASM_API_EXTERN wasm_trap_twasmtime_trap_new (const char *msg, size_t msg_len)
 Creates a new trap with the given message. More...
 
WASM_API_EXTERN wasm_trap_twasmtime_trap_new_code (wasmtime_trap_code_t code)
 Creates a new trap from the given trap code. More...
 
WASM_API_EXTERN bool wasmtime_trap_code (const wasm_trap_t *, wasmtime_trap_code_t *code)
 Attempts to extract the trap code from this trap. More...
 
WASM_API_EXTERN const wasm_name_twasmtime_frame_func_name (const wasm_frame_t *)
 Returns a human-readable name for this frame's function. More...
 
WASM_API_EXTERN const wasm_name_twasmtime_frame_module_name (const wasm_frame_t *)
 Returns a human-readable name for this frame's module. More...
 

Detailed Description

Wasmtime APIs for interacting with traps and extensions to wasm_trap_t.

Typedef Documentation

◆ wasmtime_trap_code_t

typedef uint8_t wasmtime_trap_code_t

Code of an instruction trap.

See wasmtime_trap_code_enum for possible values.

Enumeration Type Documentation

◆ wasmtime_trap_code_enum

Trap codes for instruction traps.

Enumerator
WASMTIME_TRAP_CODE_STACK_OVERFLOW 

The current stack space was exhausted.

WASMTIME_TRAP_CODE_MEMORY_OUT_OF_BOUNDS 

An out-of-bounds memory access.

WASMTIME_TRAP_CODE_HEAP_MISALIGNED 

A wasm atomic operation was presented with a not-naturally-aligned linear-memory address.

WASMTIME_TRAP_CODE_TABLE_OUT_OF_BOUNDS 

An out-of-bounds access to a table.

WASMTIME_TRAP_CODE_INDIRECT_CALL_TO_NULL 

Indirect call to a null table entry.

WASMTIME_TRAP_CODE_BAD_SIGNATURE 

Signature mismatch on indirect call.

WASMTIME_TRAP_CODE_INTEGER_OVERFLOW 

An integer arithmetic operation caused an overflow.

WASMTIME_TRAP_CODE_INTEGER_DIVISION_BY_ZERO 

An integer division by zero.

WASMTIME_TRAP_CODE_BAD_CONVERSION_TO_INTEGER 

Failed float-to-int conversion.

WASMTIME_TRAP_CODE_UNREACHABLE_CODE_REACHED 

Code that was supposed to have been unreachable was reached.

WASMTIME_TRAP_CODE_INTERRUPT 

Execution has potentially run too long and may be interrupted.

WASMTIME_TRAP_CODE_OUT_OF_FUEL 

Execution has run out of the configured fuel amount.

WASMTIME_TRAP_CODE_ATOMIC_WAIT_NON_SHARED_MEMORY 

Used to indicate that a trap was raised by atomic wait operations on non shared memory.

WASMTIME_TRAP_CODE_NULL_REFERENCE 

Call to a null reference.

WASMTIME_TRAP_CODE_ARRAY_OUT_OF_BOUNDS 

Attempt to access beyond the bounds of an array.

WASMTIME_TRAP_CODE_ALLOCATION_TOO_LARGE 

Attempted an allocation that was too large to succeed.

WASMTIME_TRAP_CODE_CAST_FAILURE 

Attempted to cast a reference to a type that it is not an instance of.

WASMTIME_TRAP_CODE_CANNOT_ENTER_COMPONENT 

When the component-model feature is enabled this trap represents a scenario where one component tried to call another component but it would have violated the reentrance rules of the component model, triggering a trap instead.

WASMTIME_TRAP_CODE_NO_ASYNC_RESULT 

Async-lifted export failed to produce a result by calling task.return before returning STATUS_DONE and/or after all host tasks completed.

WASMTIME_TRAP_CODE_UNHANDLED_TAG 

We are suspending to a tag for which there is no active handler.

WASMTIME_TRAP_CODE_CONTINUATION_ALREADY_CONSUMED 

Attempt to resume a continuation twice.

WASMTIME_TRAP_CODE_DISABLED_OPCODE 

A Pulley opcode was executed at runtime when the opcode was disabled at compile time.

WASMTIME_TRAP_CODE_ASYNC_DEADLOCK 

Async event loop deadlocked; i.e. it cannot make further progress given that all host tasks have completed and any/all host-owned stream/future handles have been dropped.

WASMTIME_TRAP_CODE_CANNOT_LEAVE_COMPONENT 

When the component-model feature is enabled this trap represents a scenario where a component instance tried to call an import or intrinsic when it wasn't allowed to, e.g. from a post-return function.

WASMTIME_TRAP_CODE_CANNOT_BLOCK_SYNC_TASK 

A synchronous task attempted to make a potentially blocking call prior to returning.

WASMTIME_TRAP_CODE_INVALID_CHAR 

A component tried to lift a char with an invalid bit pattern.

WASMTIME_TRAP_CODE_DEBUG_ASSERT_STRING_ENCODING_FINISHED 

Debug assertion generated for a fused adapter regarding the expected completion of a string encoding operation.

WASMTIME_TRAP_CODE_DEBUG_ASSERT_EQUAL_CODE_UNITS 

Debug assertion generated for a fused adapter regarding a string encoding operation.

WASMTIME_TRAP_CODE_DEBUG_ASSERT_POINTER_ALIGNED 

Debug assertion generated for a fused adapter regarding the alignment of a pointer.

WASMTIME_TRAP_CODE_DEBUG_ASSERT_UPPER_BITS_UNSET 

Debug assertion generated for a fused adapter regarding the upper bits of a 64-bit value.

WASMTIME_TRAP_CODE_STRING_OUT_OF_BOUNDS 

A component tried to lift or lower a string past the end of its memory.

WASMTIME_TRAP_CODE_LIST_OUT_OF_BOUNDS 

A component tried to lift or lower a list past the end of its memory.

WASMTIME_TRAP_CODE_INVALID_DISCRIMINANT 

A component used an invalid discriminant when lowering a variant value.

WASMTIME_TRAP_CODE_UNALIGNED_POINTER 

A component passed an unaligned pointer when lifting or lowering a value.

Function Documentation

◆ wasmtime_frame_func_name()

WASM_API_EXTERN const wasm_name_t * wasmtime_frame_func_name ( const wasm_frame_t )

Returns a human-readable name for this frame's function.

This function will attempt to load a human-readable name for function this frame points to. This function may return NULL.

The lifetime of the returned name is the same as the wasm_frame_t itself.

◆ wasmtime_frame_module_name()

WASM_API_EXTERN const wasm_name_t * wasmtime_frame_module_name ( const wasm_frame_t )

Returns a human-readable name for this frame's module.

This function will attempt to load a human-readable name for module this frame points to. This function may return NULL.

The lifetime of the returned name is the same as the wasm_frame_t itself.

◆ wasmtime_trap_code()

WASM_API_EXTERN bool wasmtime_trap_code ( const wasm_trap_t ,
wasmtime_trap_code_t code 
)

Attempts to extract the trap code from this trap.

Returns true if the trap is an instruction trap triggered while executing Wasm. If true is returned then the trap code is returned through the code pointer. If false is returned then this is not an instruction trap – traps can also be created using wasm_trap_new, or occur with WASI modules exiting with a certain exit code.

◆ wasmtime_trap_new()

WASM_API_EXTERN wasm_trap_t * wasmtime_trap_new ( const char *  msg,
size_t  msg_len 
)

Creates a new trap with the given message.

Parameters
msgthe message to associate with this trap
msg_lenthe byte length of msg

The wasm_trap_t returned is owned by the caller.

◆ wasmtime_trap_new_code()

WASM_API_EXTERN wasm_trap_t * wasmtime_trap_new_code ( wasmtime_trap_code_t  code)

Creates a new trap from the given trap code.

Parameters
codethe trap code to associate with this trap

The wasm_trap_t returned is owned by the caller.