diff options
author | Håkan Mattsson <[email protected]> | 2016-11-02 12:56:39 +0100 |
---|---|---|
committer | Håkan Mattsson <[email protected]> | 2016-12-12 16:40:29 +0100 |
commit | 2f8d59aa9e8a96d094172db339fd94aae45a90b5 (patch) | |
tree | 963d90abce0d57dd204c9d526b476c830afb9d5b /erts/emulator/test | |
parent | b47d104994c6f11301f23b0675ed5f06f3e25922 (diff) | |
download | otp-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/test')
-rw-r--r-- | erts/emulator/test/process_SUITE.erl | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl index 0f999e0efe..2289cbabc7 100644 --- a/erts/emulator/test/process_SUITE.erl +++ b/erts/emulator/test/process_SUITE.erl @@ -437,11 +437,22 @@ t_process_info(Config) when is_list(Config) -> verify_loc(Line2, Res2), pi_stacktrace([{?MODULE,t_process_info,1,?LINE}]), + verify_stacktrace_depth(), + Gleader = group_leader(), {group_leader, Gleader} = process_info(self(), group_leader), {'EXIT',{badarg,_Info}} = (catch process_info('not_a_pid')), ok. +verify_stacktrace_depth() -> + CS = current_stacktrace, + OldDepth = erlang:system_flag(backtrace_depth, 0), + {CS,[]} = erlang:process_info(self(), CS), + _ = erlang:system_flag(backtrace_depth, 8), + {CS,[{?MODULE,verify_stacktrace_depth,0,_},_|_]} = + erlang:process_info(self(), CS), + _ = erlang:system_flag(backtrace_depth, OldDepth). + pi_stacktrace(Expected0) -> {Line,Res} = {?LINE,erlang:process_info(self(), current_stacktrace)}, {current_stacktrace,Stack} = Res, |