Very often an app goes into a flapping state, where it repeatedly fails to launch and is restarted over and over by Marathon.
The status will flip every few seconds between WAITING, STAGING, RUNNING.
If you look at the UI for a moment, everything might look OK. There is no indication that your app is trapped in a failure cycle.
Marathon should recognise a repeated failure loop and signal specifically that this is happening.
Example: Status could read MULTIPLE FAILURES (N) where N is the number of failures since the last stable state. Or, MULTIPLE FAILURES (N min) where N is the number of minutes the app has been in a non-Running state.