Trunk now has better handling of failures in the child process whilst still inside Upstart's own code, specifically it can catch an exec() failure and obtain the error number.
In practice, there's little we can realisitically do; but we do at least log the problem ("No such file or directory") and fail both the job and event that spawned it.
This means that a distribution can deal with /bin/sh missingness with any of:
start on stopped sulogin failed
exec /sbin/omgtheskyisfalling
or:
start on stalled/failed
exec /sbin/omgtheskyisfalling
Trunk now has better handling of failures in the child process whilst still inside Upstart's own code, specifically it can catch an exec() failure and obtain the error number.
In practice, there's little we can realisitically do; but we do at least log the problem ("No such file or directory") and fail both the job and event that spawned it.
This means that a distribution can deal with /bin/sh missingness with any of:
start on stopped sulogin failed isfalling
exec /sbin/omgthesky
or:
start on stalled/failed isfalling
exec /sbin/omgthesky
etc.