|
@@ -161,12 +161,18 @@ report_crash(Ref, StreamID, Pid, Reason, Stacktrace) ->
|
|
%% @todo Better spec.
|
|
%% @todo Better spec.
|
|
-spec request_process(_, _, _) -> _.
|
|
-spec request_process(_, _, _) -> _.
|
|
request_process(Req, Env, Middlewares) ->
|
|
request_process(Req, Env, Middlewares) ->
|
|
|
|
+ OTP = erlang:system_info(otp_release),
|
|
try
|
|
try
|
|
execute(Req, Env, Middlewares)
|
|
execute(Req, Env, Middlewares)
|
|
catch
|
|
catch
|
|
exit:Reason ->
|
|
exit:Reason ->
|
|
Stacktrace = erlang:get_stacktrace(),
|
|
Stacktrace = erlang:get_stacktrace(),
|
|
erlang:raise(exit, {Reason, Stacktrace}, Stacktrace);
|
|
erlang:raise(exit, {Reason, Stacktrace}, Stacktrace);
|
|
|
|
+ %% OTP 19 does not propagate any exception stacktraces,
|
|
|
|
+ %% we therefore add it for every class of exception.
|
|
|
|
+ _:Reason when OTP =:= "19" ->
|
|
|
|
+ Stacktrace = erlang:get_stacktrace(),
|
|
|
|
+ erlang:raise(exit, {Reason, Stacktrace}, Stacktrace);
|
|
Class:Reason ->
|
|
Class:Reason ->
|
|
erlang:raise(Class, Reason, erlang:get_stacktrace())
|
|
erlang:raise(Class, Reason, erlang:get_stacktrace())
|
|
end.
|
|
end.
|