[erlang-questions] Hang in ssl_connection:call/2 with ranch

Roger Lipscombe roger@REDACTED
Fri Apr 26 22:35:59 CEST 2019


I'm looking at a deadlock on one of our servers (fortunately only in
staging bring-up, so it's not bothering anyone yet).

I've got a ranch protocol handler blocked in ranch:accept_ack, waiting
for a 'shoot' message. That's never being sent because the
ranch_conns_sup process is blocked in ssl:controlling_process ->
ssl_connection:new_user -> ssl_connection:call ->
gen_statem:call_dirty -> gen:do_call.

This is *not* happening on any of our other servers. If I restart the
node, it happens again when a client connects.

It's also (afaict) only affecting two of the configured ranch
listeners; the other two appear to be fine.

I've got a crash dump: all I can see is the ranch_conns_sup process is
blocking in gen_statem:call_dirty but the receiving process appears
(afaict) to be happily sitting in gen_statem:loop_receive, with
message_queue_len = 0, so I don't know why the call's not completing.

Any ideas? What else can I look at, assuming it continues to happen?

(OTP-21.0, ranch 1.3.2)

More information about the erlang-questions mailing list