How to debug `Application my_app exited: shutdown` randomly?

Hi! Does anyone have any recommendation on how to debug my application seemingly completely randomly shutting down? The only diagnostic information I seem to get is that it logs

[notice] Application my_app exited: shutdown

AFAIK there’s nothing else weird going on with the app. This is my dev machine so it’s entirely possible that it’s being caused by something there (OOM killer? Running out of file descriptors?) but I don’t know how to get at the underlying cause. I’m not seeing this in other environments like production.

Nothing else is being logged around it, it doesn’t seem to correlate to application errors (which I run into during development for sure) or anything else in particular. It just randomly shuts down and I have to restart it.

You haven’t given us any information so I’d offer you to start disabling the supervised parts of your app one by one and trying to reproduce the problem until you pinpoint the guilty party.

You haven’t given us any information

This is all the information I have! That’s my point lol. I’m hoping to learn how to get more information.

It’s a pretty basic phoenix app. I can’t disable much from the supervision tree without making the app useless which isn’t really acceptable at the moment since I wouldn’t be able to get anything done.

If any part of my supervision tree was crashing, would I not see error logs? Is there a logger setting I’m forgetting about? I haven’t changed anything from the mix config. I’m going to try enabling SASL handling in the elixir logger.

TBF I am really not the right guy to help you here, just gave you one shot in the dark – I don’t do Phoenix for a while now.

I’d try enabling logging as much as possible indeed but otherwise no, parts of the apps falling down shouldn’t normally spam the stdout so yeah it can be a bit invisible.

How new is the app? If you just started you can also create it anew with mix and make a directory-wide diff?

Just following up here, I finally caught it. I enabled SASL logging and caught the supervisor’s crash message.

It’s not super relevant to the original question but in case anyone else stumbles upon this, the error I’m getting is:

[error] Child Plug.Cowboy.Drainer of Supervisor MyAppWeb.Endpoint shut down abnormally
** (exit) killed
Pid: #PID<0.1011.0>
Start Call: Plug.Cowboy.Drainer.start_link([refs: [MyAppWeb.Endpoint.HTTP]])
Restart: :permanent
Shutdown: 5000
Type: :worker

Without SASL logging enabled there was nothing else in the logs to indicate why the app had crashed.

Cool! And did you find out why was it failing?

Not yet but I opened an issue :slight_smile:

1 Like