diff --git a/src/error_logger_lager_h.erl b/src/error_logger_lager_h.erl index 185c211..ff8c28c 100644 --- a/src/error_logger_lager_h.erl +++ b/src/error_logger_lager_h.erl @@ -188,6 +188,8 @@ format_reason({system_limit, [{M, F, _}|_] = Trace}) -> "maximum number of processes exceeded"; {erlang, list_to_atom} -> "tried to create an atom larger than 255, or maximum atom count exceeded"; + {ets, new} -> + "maximum number of ETS tables exceeded"; _ -> {Str, _} = lager_trunc_io:print(Trace, 500), Str diff --git a/test/lager_test_backend.erl b/test/lager_test_backend.erl index a6144d9..8d1f98d 100644 --- a/test/lager_test_backend.erl +++ b/test/lager_test_backend.erl @@ -552,6 +552,16 @@ error_logger_redirect_test_() -> ?assertEqual(Expected, lists:flatten(Msg)) end }, + {"crash report for system ets table limit", + fun() -> + error_logger:error_report(crash_report, [[{pid, self()}, {error_info, {error, {system_limit,[{ets,new,[segment_offsets,[ordered_set,public]]},{mi_segment,open_write,1},{mi_buffer_converter,handle_cast,2},{gen_server,handle_msg,5},{proc_lib,init_p_do_apply,3}]}, []}}], []]), + timer:sleep(100), + {_, _, Msg} = pop(), + Expected = lists:flatten(io_lib:format("[error] ~w CRASH REPORT Process ~w with 0 neighbours crashed with reason: system limit: maximum number of ETS tables exceeded", [self(), self()])), + ?assertEqual(Expected, lists:flatten(Msg)) + end + }, + {"messages should not be generated if they don't satisfy the threshold", fun() -> lager:set_loglevel(?MODULE, error),