From 8e0cf7578c3d8df51943598dd303853c36634024 Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:38:33 +0800 Subject: [PATCH 1/7] add back KINDA_DUMP_STACK_TRACE --- .github/workflows/elixir.yml | 10 +++++++++- src/result.zig | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 89bc38d..7ed8bc9 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -67,16 +67,24 @@ jobs: run: | zig fmt --check src zig fmt --check kinda_example/native/zig-src - - name: Run tests (example with gdb) + - name: Run tests (example with gdb and stack trace) working-directory: ./kinda_example run: | sudo apt update sudo apt install -y gdb bash ../scripts/gdb.sh test + env: + KINDA_DUMP_STACK_TRACE: "1" - name: Run tests (example) working-directory: ./kinda_example run: | mix test --force + - name: Run tests (example, with stack trace) + working-directory: ./kinda_example + run: | + mix test --force + env: + KINDA_DUMP_STACK_TRACE: "1" - name: Precompile working-directory: ./kinda_example env: diff --git a/src/result.zig b/src/result.zig index 5fc7486..bc99569 100644 --- a/src/result.zig +++ b/src/result.zig @@ -7,6 +7,11 @@ pub fn nif_with_flags(comptime name: [*c]const u8, comptime arity: usize, compti return struct { fn exported(env: beam.env, n: c_int, args: [*c]const beam.term) callconv(.c) beam.term { return f(env, n, args) catch |err| { + var value: [256]u8 = undefined; + var value_size: usize = value.len; + if (e.enif_getenv("KINDA_DUMP_STACK_TRACE", &value[0], &value_size) == 0) { + std.debug.dumpStackTrace(@errorReturnTrace().*); + } return beam.raise_exception(env, ns ++ "Kinda.CallError", err); }; } From 8718d7dea3e5cf42f5ce4348b4268b40b7fc583d Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:39:59 +0800 Subject: [PATCH 2/7] Update result.zig --- src/result.zig | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/result.zig b/src/result.zig index bc99569..92b78c7 100644 --- a/src/result.zig +++ b/src/result.zig @@ -2,14 +2,18 @@ const beam = @import("beam"); const e = @import("erl_nif").c; const std = @import("std"); +pub fn is_stack_trace_enabled() bool { + var value: [256]u8 = undefined; + var value_size: usize = value.len; + return e.enif_getenv("KINDA_DUMP_STACK_TRACE", &value[0], &value_size) != 0; +} + pub fn nif_with_flags(comptime name: [*c]const u8, comptime arity: usize, comptime f: anytype, comptime flags: u32) type { const ns = "Elixir."; return struct { fn exported(env: beam.env, n: c_int, args: [*c]const beam.term) callconv(.c) beam.term { return f(env, n, args) catch |err| { - var value: [256]u8 = undefined; - var value_size: usize = value.len; - if (e.enif_getenv("KINDA_DUMP_STACK_TRACE", &value[0], &value_size) == 0) { + if (is_stack_trace_enabled()) { std.debug.dumpStackTrace(@errorReturnTrace().*); } return beam.raise_exception(env, ns ++ "Kinda.CallError", err); From aa1e4ee258da7bfa17f48a9f83a93d9225b09052 Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:41:45 +0800 Subject: [PATCH 3/7] Update elixir.yml --- .github/workflows/elixir.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 7ed8bc9..35edc15 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -67,24 +67,24 @@ jobs: run: | zig fmt --check src zig fmt --check kinda_example/native/zig-src - - name: Run tests (example with gdb and stack trace) - working-directory: ./kinda_example + - name: Install gdb run: | sudo apt update sudo apt install -y gdb + - name: Run tests (example with gdb and stack trace) + working-directory: ./kinda_example + run: | bash ../scripts/gdb.sh test env: KINDA_DUMP_STACK_TRACE: "1" - - name: Run tests (example) + - name: Run tests (example with gdb) working-directory: ./kinda_example run: | - mix test --force - - name: Run tests (example, with stack trace) + bash ../scripts/gdb.sh test + - name: Run tests (example) working-directory: ./kinda_example run: | mix test --force - env: - KINDA_DUMP_STACK_TRACE: "1" - name: Precompile working-directory: ./kinda_example env: From 3c4408437c713487628eb5215b4aa8c7966132b4 Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:45:01 +0800 Subject: [PATCH 4/7] KINDA_DUMP_STACK_TRACE --- mix.exs | 2 +- src/result.zig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index a8b9991..785be29 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Kinda.MixProject do def project do [ app: :kinda, - version: "0.10.6-dev", + version: "0.10.5", elixir: "~> 1.9", start_permanent: Mix.env() == :prod, deps: deps(), diff --git a/src/result.zig b/src/result.zig index 92b78c7..d12ba48 100644 --- a/src/result.zig +++ b/src/result.zig @@ -5,7 +5,7 @@ const std = @import("std"); pub fn is_stack_trace_enabled() bool { var value: [256]u8 = undefined; var value_size: usize = value.len; - return e.enif_getenv("KINDA_DUMP_STACK_TRACE", &value[0], &value_size) != 0; + return e.enif_getenv("KINDA_DUMP_STACK_TRACE", &value[0], &value_size) == 0; } pub fn nif_with_flags(comptime name: [*c]const u8, comptime arity: usize, comptime f: anytype, comptime flags: u32) type { @@ -14,7 +14,7 @@ pub fn nif_with_flags(comptime name: [*c]const u8, comptime arity: usize, compti fn exported(env: beam.env, n: c_int, args: [*c]const beam.term) callconv(.c) beam.term { return f(env, n, args) catch |err| { if (is_stack_trace_enabled()) { - std.debug.dumpStackTrace(@errorReturnTrace().*); + std.debug.dumpStackTrace(@errorReturnTrace().?.*); } return beam.raise_exception(env, ns ++ "Kinda.CallError", err); }; From 1a5343ab6aa9a50b9ec48fa3da1f4df1171caedc Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:47:08 +0800 Subject: [PATCH 5/7] Update elixir.yml --- .github/workflows/elixir.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 35edc15..0c43d44 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -85,6 +85,12 @@ jobs: working-directory: ./kinda_example run: | mix test --force + - name: Run tests (example with stack trace) + working-directory: ./kinda_example + run: | + mix test --force + env: + KINDA_DUMP_STACK_TRACE: "1" - name: Precompile working-directory: ./kinda_example env: From 332d3c48b65d8028b25b2e7e78e58fc2837a0a45 Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:47:21 +0800 Subject: [PATCH 6/7] Update mix.exs --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index 785be29..a8b9991 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Kinda.MixProject do def project do [ app: :kinda, - version: "0.10.5", + version: "0.10.6-dev", elixir: "~> 1.9", start_permanent: Mix.env() == :prod, deps: deps(), From a040d96ace1c92c52842863ff2cde6dbfd52137a Mon Sep 17 00:00:00 2001 From: Shenghang Tsai Date: Sun, 5 Oct 2025 15:49:47 +0800 Subject: [PATCH 7/7] Update elixir.yml --- .github/workflows/elixir.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 0c43d44..3848073 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -86,6 +86,7 @@ jobs: run: | mix test --force - name: Run tests (example with stack trace) + continue-on-error: true working-directory: ./kinda_example run: | mix test --force