File at-3.1.16-handle_malformed_jobs.patch of Package at

Index: at-3.1.13/atd.c
===================================================================
--- at-3.1.13.orig/atd.c
+++ at-3.1.13/atd.c
@@ -103,6 +103,7 @@ int selinux_enabled=0;
 
 #define BATCH_INTERVAL_DEFAULT 60
 #define CHECK_INTERVAL 3600
+#define RETRY_INTERVAL CHECK_INTERVAL
 
 /* Global variables */
 
@@ -845,12 +846,17 @@ run_loop()
 
 		/* Something went wrong the last time this was executed.
 		 * Let's remove the lockfile and reschedule.
+		 *
+		 * To prevent pointless CPU heating with permanent errors,
+		 * next execution is scheduled with RETRY_INTERVAL inserted.
 		 */
 		strncpy(lock_name, dirent->d_name, sizeof(lock_name)-1);
 		lock_name[sizeof(lock_name)-1] = 0;
 		lock_name[0] = '=';
 		unlink(lock_name);
-		next_job = now;
+		if (next_job > now + RETRY_INTERVAL) {
+		    next_job = now + RETRY_INTERVAL;
+		}
 		nothing_to_do = 0;
 	    }
 	    continue;
openSUSE Build Service is sponsored by