Stacktraces being cut off

I will eventually add a more specific and concrete example but first wanted some general help or advice on stacktraces.

I am currently working on an Elixir Phoenix Absinthe application that is currently in the beginning stages of production, however while in development I actually had a fair amount of trouble with stacktraces being cut off. Absinthe a lot of time seems to hog the entirety of the stack trace and its difficult for me to track where in my code the bug currently started. I’ve messed around with using rescue, debugger.start(), but these things seem less useful when I’m not exactly sure where in my code the problem arose.
I have a lot of work being done before data gets pushed back to the resolver and alot of times the resolver stack is the only thing I see when things go wirey.
I set my Phoenix config logger level to infinity and still no good. I feel like outside of explicitly rescuing or knowing right where the problem is (which is the source of my problem) I don’t know how to print a full full stack trace.

TLDR
Is there something I can do to better pinpoint where in my code something is going wrong when extenal libraries tend to take up a huge part of the stack before it gets truncated.

Hello @xshyne88!

Could you please elaborate what parts of the call stack are missing?

If it is about calls in the mid of the chain, this is totally as expected, as the BEAM does havey tailcall optimisation and some calls simply do not produce a new stackframe but overwrite the old.

def foo(), do: bar()

def bar(), do: :bar

In such a scenario foo/0 would never appear in a call stack.

@xshyne88 Have you configured the erlang :backtrace_depth? I believe the default is rather small (although if you use Phoenix they bump it to 20 by default).

What does this print out for you? (it returns the previous :backtrace_depth)

:erlang.system_flag(:backtrace_depth, 20)

docs: http://erlang.org/doc/man/erlang.html#system_flag-2

Also welcome to the forum! :wave:

Perfect, thank you! I didn’t know this… I’ll elaborate when I run across another real example, I’ll post it here, did not hit one yesterday.

Hi Axelson!
No I didn’t try it, or at least I don’t remember trying it. I’ll check it out. In my Iex shell it was 20. thanks for the reference I’ll post here again in a bit.

1 Like

Also thank you for answering my generic non specific question so quickly ! :P, I’m very happy to be here on Elixir Forum its been an incredible resource for me as I’ve been using Elixir at my work for about 6 months now and have progressed very quickly due to this forum and my head developer mentoring me. I’d love to answer questions and give back too.