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.

1 Like

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 phx.new 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 phx.new 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.

1 Like

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

Not yet but I opened an issue :slight_smile:

1 Like

Thanks for this, helped me debugging a similar issue :blush:

1 Like

Hi all, for anyone else running into this.

Make sure your ENV values are loaded before starting your server.

I was experiencing the “Application ABC exited: shutdown”, loading my env resolved the process that was getting killed.

1 Like