I’ve figured out how to trigger this, and have minimum reproducible example here: https://dirty-exit.onrender.com/ (note: it may be down for obvious reasons). Code for it is here: GitHub - KMarshland/render-dirty-exit: To test out dirty exits on render.com
It “works” by mallocing 1GB when you go to /dirty-exit. The logs look like:
Mar 2 11:13:15 PM ==> Starting service with 'bundle exec rails s'
Mar 2 11:13:18 PM => Booting Puma
Mar 2 11:13:18 PM => Rails 6.1.3 application starting in production
Mar 2 11:13:18 PM => Run `bin/rails server --help` for more startup options
Mar 2 11:13:18 PM A server is already running. Check /tmp/puma-server.pid.
Mar 2 11:13:18 PM Exiting
Mar 2 11:13:37 PM ==> Starting service with 'bundle exec rails s'
Mar 2 11:13:39 PM => Booting Puma
Mar 2 11:13:39 PM => Rails 6.1.3 application starting in production
Mar 2 11:13:39 PM => Run `bin/rails server --help` for more startup options
Mar 2 11:13:39 PM A server is already running. Check /tmp/puma-server.pid.
Mar 2 11:13:39 PM Exiting
Mar 2 11:14:10 PM ==> Starting service with 'bundle exec rails s'
Mar 2 11:14:12 PM => Booting Puma
Mar 2 11:14:12 PM => Rails 6.1.3 application starting in production
Mar 2 11:14:12 PM => Run `bin/rails server --help` for more startup options
Mar 2 11:14:12 PM Exiting
Mar 2 11:14:12 PM A server is already running. Check /tmp/puma-server.pid.
A hack to get it to work is to rm -f /tmp/puma-server.pid
in the start command.
Note also that it’s able to recover as expected a reasonable percentage of the time – just not always.