:erlang.get_stacktrace/0 is undefined or private

I’ve seen others in the past have run into this. I’m not sure how I’ve broken my environment, but have tried started from scratch multiple times - using both multiple different versions with asdf and even the vanilla erlang elixir that comes with Ubuntu. I’ve look for any cached rebar stuff and just can’t seem to get myself past this.

Anyone have a bit of wisdom to save me from starting to throw things?

22:51:04.684 [error] Ranch protocol #PID<0.613.0> of listener SomeApp.Endpoint.HTTP (connection #PID<0.612.0>, stream id 1) terminated
an exception was raised:
    ** (UndefinedFunctionError) function :erlang.get_stacktrace/0 is undefined or private
        :erlang.get_stacktrace()
        (cowboy 2.7.0) /home/kit/Code/someapp/deps/cowboy/src/cowboy_stream_h.erl:314: :cowboy_stream_h.request_process/3

Maybe there’s a clue in there that I’m just not seeing. Previous posts here and scouring Google have pointed to a mismatched version of rebar - which could be it, but can’t find it, and you’d think since this seems to happen in all different versions of Erlang and Elixir that there a bad rebar somewhere.

Well, TIA if anyone has a pointer.

What version of OTP are you using? You can check this in iex like :erlang.system_info :system_version

Have tried with a bunch of 'em. Current now:

'Erlang/OTP 25 [erts-13.1.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]\n'

This version of OTP doesn’t have get_stacktrace function

So this is the rebar mismatch? Urgh.

I’m not sure I get who’s the problem here.

Erlang/OTP 25 [erts-13.1.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]

Could not find "rebar3", which is needed to build dependency :unicode_util_compat
I can install a local copy which is just used by Mix
Shall I install rebar3? (if running non-interactively, use "mix local.rebar --force") [Yn] 

If I do this, it should install an appropriate rebar correct? I’ve tried pointing at the latest installed via asdf as well.

Yes, it will install the correct rebar
I think you just need to update you deps (with mix deps.update --all command)

The especially weird part is that that call is wrapped in an explicit OTP version check :thinking:

I believe he’s running the outdated cowboy version

That link goes to the 2.7.0 tag, which was mentioned in the OP’s stacktrace.

1 Like

Ah, sorry, didn’t see that

Thanks all, looking through the deps versions. And yes, it appears to have been my dated version of cowboy.

Super appreciate you all taking the time to help me out.