Probably the weakest area of erlang is in it’s displaying of error messages. The most dreaded message of all (at least for me) is starting up an application and seeing something like this in the log:

Erlang has closed
                 {"Kernel pid terminated",application_controller,"{application_start_failure,riak_kv,{shutdown,{riak_kv_app,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,riak_kv,{shutdown,{riak_kv_app,start,[normal,[]]}}})

I’m not hard core enough to derive much use out of the crash dump, so what to do? Since SASL has already started and is relatively mum about the whole situation, there isn’t much more that can be done besides firing up the debugger or going through the mental check list.

In this case, the culprit is a port conflict. I have a service running on the default riak port 8081, so when riak starts up, it dies almost immediately. But what good is death without a verbose manifesto?