diff --git a/src/gen_apu.erl b/src/gen_apu.erl index 799b6a8..e7f8846 100644 --- a/src/gen_apu.erl +++ b/src/gen_apu.erl @@ -33,7 +33,7 @@ , format_status/2 %% Internal callbacks - , wakeupFromHib/9 + , wakeupFromHib/8 %% logger callback , format_log/1, format_log/2, print_event/3 @@ -275,9 +275,9 @@ enter_loop(Module, State, Opts, ServerName, Actions) -> loopEntry(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, #{}, State, listify(Actions)). %%% Internal callbacks -wakeupFromHib(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, IsHib) -> +wakeupFromHib(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState) -> %% 这是一条新消息,唤醒了我们,因此我们必须立即收到它 - receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, IsHib). + receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, true). loopEntry(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, Actions) -> case doParseAL(Actions, Name, Debug, false, false, Timers) of @@ -290,7 +290,7 @@ loopEntry(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, C _ -> case IsHib of true -> - proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, NewTimers, CurState, IsHib]); + proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, NewTimers, CurState]); _ -> receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, NewTimers, CurState, false) end @@ -304,9 +304,9 @@ loopEntry(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, C system_continue(Parent, Debug, {Name, Module, GbhOpts, HibernateAfterTimeout, Timers, CurState, IsHib}) -> case IsHib of true -> - proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, IsHib]); + proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState]); _ -> - receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, IsHib) + receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, false) end. -spec system_terminate(_, _, _, [_]) -> no_return(). @@ -741,7 +741,7 @@ receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, matchInfoMsg(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, Msg) end after HibernateAfterTimeout -> - proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, IsHib]) + proc_lib:hibernate(?MODULE, wakeupFromHib, [Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState]) end. matchCallMsg(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, From, Request) -> @@ -810,6 +810,7 @@ matchMFA(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, Cu try_greply(From, {error, undef}), receiveIng(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, false); Class:Reason:Strace -> + try_greply(From, {error, {inner_error, {Class, Reason, Stra ce}}}), innerError(Parent, Name, Module, GbhOpts, HibernateAfterTimeout, Debug, Timers, CurState, {mfa, MFA}, Class, Reason, Strace) end.