Cron has been running for more than an hour and is most likely stuck, problem is persisting I am getting this error each time I run the cron. When I saw the status report I found last time cron was run was about 8 weeks ago. It is same for all the 3 websties that I host with the same server, shored hosting. when I tried to run cron manually, it ended with a message cron failed. Somewhere I read it possible reason could be /tmp folder, so I created a tmp folder in installation directory for all the three websites. It did work for one of the websites, I am able to run cron manually in that website. But for other two websites it was the same error. A discussion in drupal.org told it could be problem with cron_semaphore variable. I tried deleting cron_semaphore variable using phpmyadmin and cleared the cache, but still it is same problem. Sometimes when I try it manually , it gives error message that MYSQL has gone away from query while inserting data into watchdog.  Is it because of the MySQL or file permissions problem ? Can it be cured if I update core to latest version? Or should I contact the hosting provider, is there is a problem with them?
There are too many factors that can stop the cron from being executed.

To see where exactly it breaks, open includes/module.inc and at the line 496 (function module_invoke_all()) add this:

foreach (module_implements($hook) as $module) {
  $function = $module .'_'. $hook;

  // This is the line you should add:
  if ($hook == 'cron') watchdog('cron debug', "Cron is processing module: $module");


Then run the cron from admin. The last module to be called is the one which breaks. Look further into the implementation of hook_cron() of that module and debug further.

This is inspired by this comment.

See this discussion.