本文主要记录各种情况下gen_server进程退出的表现. 研究动机起源于Elixir/Phoenix框架中遇到的一个进程异常退出问题.因为网络异常,客户端超过一段时间未发来消息,channel进程(一个gen_server)退出了,但是挂的很突兀,不调用 terminate,进而导致掉线处理没被调用,表现出一堆bug.分析发现它是被shutdown的,而一个gen_server如果没有trap_exit,被shutdown就不会调用terminate. Anyway,实验了各种组合,仅以此做个…