aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorHåkan Mattsson <[email protected]>2016-11-02 12:56:39 +0100
committerHåkan Mattsson <[email protected]>2016-12-12 16:40:29 +0100
commit2f8d59aa9e8a96d094172db339fd94aae45a90b5 (patch)
tree963d90abce0d57dd204c9d526b476c830afb9d5b /erts/emulator/beam
parentb47d104994c6f11301f23b0675ed5f06f3e25922 (diff)
downloadotp-2f8d59aa9e8a96d094172db339fd94aae45a90b5.tar.gz
otp-2f8d59aa9e8a96d094172db339fd94aae45a90b5.tar.bz2
otp-2f8d59aa9e8a96d094172db339fd94aae45a90b5.zip
erts: Make depth of current_stacktrace configurable
The BIF process_info(Pid, current_stacktrace) truncates the stacktrace. The old behavior was to truncate long stacktraces to max 8 items. And this was hard coded. Now it is truncated to the value of system_flag(backtrace_depth) instead. The backtrace_depth defaults to 8, but is configurable.
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/erl_bif_info.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index 735aabbee3..88a052cad7 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -1672,11 +1672,11 @@ current_stacktrace(Process* p, Process* rp, Eterm** hpp)
Eterm mfa;
Eterm res = NIL;
- depth = 8;
+ depth = erts_backtrace_depth;
sz = offsetof(struct StackTrace, trace) + sizeof(BeamInstr *)*depth;
s = (struct StackTrace *) erts_alloc(ERTS_ALC_T_TMP, sz);
s->depth = 0;
- if (rp->i) {
+ if (depth > 0 && rp->i) {
s->trace[s->depth++] = rp->i;
depth--;
}