this is my second attempt at fixing it in 0.3.8. The first fix was bad.
I added checks to job_next_state() to handle respawning and post-start/pre-stop processes as you suggested.
I also made jobs forget their "blocked" status when advanced to WAITING. Now totally sure about this one.
In main.c, I made it reboot on crash rather than restart init.
As a result, my tests passed, but I still got a new core from init reported just today. The problem is, these things are getting harder to reproduce.
this is my second attempt at fixing it in 0.3.8. The first fix was bad.
I added checks to job_next_state() to handle respawning and post-start/pre-stop processes as you suggested.
I also made jobs forget their "blocked" status when advanced to WAITING. Now totally sure about this one.
In main.c, I made it reboot on crash rather than restart init.
As a result, my tests passed, but I still got a new core from init reported just today. The problem is, these things are getting harder to reproduce.