I had created a campaign which would run if manually started but wouldn't run via the cron system.
I tried disabling the wordpress cron and using a linux crontab job to call wp-cron.php , but this didn't work either.
The wpematico widget in the dashboard would show the last successful run and the next run even though it was in the past.
Strangely the campaign settings would show the correct next run time even though it never actually ran.
I discovered a workaround by copying the campaign , then deactivating the original campaign and activating the new campaign.
hope that helps someone stuck with the same problem.