I recently had a problem, that some Cronjobs were started several times.
Especially Cronjobs that need more time than 5 minutes.
So the reason for the multiple execution was, that a Cronjob is executed but is not set to status “running”.
When the next Cronjob is triggerd by the OS the Job ist executed again because the status is still pending.
If you have the same problem, here is how I fixed it:
Copy the Mage/Cron/Model/Schedule.php from core folder to community with the same folder-layout.
Replace the function “tryLockJob” with the following code:
public function tryLockJob()
$result = ($this->_getResource()->trySetJobStatusAtomic($this->getId(), self::STATUS_RUNNING, self::STATUS_PENDING));
Thats it, now Crons are working again.