Sometimes, I've had a rule that fails continually, because data on it is bad. Maybe it was created in development, maybe it's just gone rogue—data with a broken-off arrowhead lodged in its side, tearing through trees until, foam crusting its lips, it lays down to die. Here's what I would do. First, poke around in the queue table in the db. You can also get valuable info from the rules_scheduler table. I would set a breakpoint in common.inc in drupal_cron_run() right where $queue->claimItem() happens…
Read more about Deleted Undead Scheduler Queue Entries