Something else to consider, if you mark a job as broken while it is running and then commit the transaction, the job is marked as broken.
But.
When the job finishes running, the broken flag is cleared by the database ( the job finished successfully, as far as oracle is concerned, the job is not broken and it sets the broken flag accordingly ).