I had a problem with cron not running after upgrading from 4.7 to 6.2 (with a hop thru 5.x). The log kept showing the error "Cron run exceeded the time limit and was aborted.". I could kick off the cron.php script, but it would always come right back with the error.
I checked php.ini it allowed longer running scripts, so the error was spurious.
Since the error message only meant that cron.php was crashing (not taking to long), I thought it might be a problem with one of the modules failing. I only had a few modules running, other than core and the standard ones, so I kept disabling them until cron.php would run. I found that if I disabled search, cron would run.
I had cut the number of items to index down to 10 in the search settings, so it seemed there was some problem with content on my site as it went thru search. I had too many entries to go thru things one at a time, so I decided to reset the search tables and see if search stopped on a certain node and I could then tell what was wrong.
I'd recommend you do a backup of your database before trying anything like this. Also, using something like phpMyAdmin might save you a little trouble.
I dropped down to the MySQL command line and reset all of search tables by hand:
mysql> DELETE FROM search_dataset;
mysql> DELETE FROM search_index;
mysql> DELETE FROM search_node_links;