Your recent log entries on watchdog show the following and you have no idea how to resolve...
Attempting to re-run cron while it is already running.
mysql_num_rows(): supplied argument is not a valid ...
Cron has been running for more than an hour and is most ...
Cron run exceeded the time limit and was aborted.
Try this...
Disable the mailhandler, scheduler and subscriptions modules if you have any of them installed.
If you have the search module enabled change it's settings for items to index per cron run to the lowest setting (10).
Run this sql query via phpmyadmin...
DELETE FROM `variable` WHERE name = 'cron_last';
If you have ssh access run this command from the directory where your cron.php resides...
or go to your status report page under logs (admin/logs/status) and run cron manually.
Run it a few times until your search has been 100% indexed. It will be helpful to setup a cronjob and let it run every 10min overnight if you have many nodes to be indexed. On one of our projects we did a phpbb forum import which created around 4000 nodes. We set cron to run between 1am-6am for 5 days, which managed to get the nodes all indexed by the search module eventually. Cron is currently set to run every 15min on this site with the subscriptions, scheduler and search modules enabled. On average round 5 new nodes are created every hour by the fairly new but steadily growing community.
Last case scenario if all else fails is to run cron from command line...
cd to the folder that drupal is installed in, root in our case and simply call the cron file like this..
[update - 30/08/2007] - it appears that the cron was affected by a conflict between eAccelerator and Zend Optimizer. They both don't work well together. eAccelerator will also prevent cron from running if its installed as a php extension. This post relates to V9.5.1 of eaccelerator.