mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-05-10 09:40:23 -04:00
a97c69c582
Mirror the backtrace improvements from PR #577 (Rust/TS) to the C# and C++ module bindings so that stack traces captured by the host show actual reducer/procedure/view function names instead of anonymous wrappers. C# changes: - Add [MethodImpl(NoInlining)] to all generated Invoke() methods in reducer, procedure, and view dispatcher classes. This prevents the JIT/AOT from inlining these frames away, ensuring they appear as named WASM functions in wasmtime-captured backtraces. - Add Log.Error() in the reducer error handler for consistency with procedures and views, which already log full exceptions. C++ changes: - Add __attribute__((noinline)) to user function definitions in all macro variants: SPACETIMEDB_REDUCER, SPACETIMEDB_REDUCER_NAMED, SPACETIMEDB_INIT, SPACETIMEDB_CLIENT_CONNECTED, SPACETIMEDB_CLIENT_DISCONNECTED, SPACETIMEDB_VIEW, SPACETIMEDB_VIEW_NAMED, SPACETIMEDB_PROCEDURE, and SPACETIMEDB_PROCEDURE_NAMED. This ensures the actual user function name appears as a distinct frame in WASM backtraces rather than being optimized into the surrounding lambda wrappers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>