2.6.12: itimer_real timers don't survive execve() any more

From: Gerd Knorr
Date: Thu Aug 04 2005 - 11:59:35 EST


Hi,

Somewhere between 2.6.11 and 2.6.12 the regression in $subject
was added to the linux kernel. Testcase below.

Ideas on that anyone?

Gerd

==============================[ test_exec_alarm.c ]==============================
#include <sys/time.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char ** argv)
{
struct itimerval value;
int retval;
static char hosted_executable[256];
char * hosted_executable_args[2];

/* Set the alarm timer. */
value.it_interval.tv_sec = 0;
value.it_interval.tv_usec = 0;
value.it_value.tv_sec = 200;
value.it_value.tv_usec = 0;
retval = setitimer(ITIMER_REAL, &value, NULL);
if (retval != 0) {
perror("setitimer()");
return 1;
}

/* Prepare the file name of the hosted executable. */
strcpy(hosted_executable, "./test_getitimer");

/* Prepare the command line arguments. */
hosted_executable_args[0] = hosted_executable;
hosted_executable_args[1] = NULL;

/* Execute the hosted executable which should inherit the timer. */
retval = execvp(hosted_executable, hosted_executable_args);

/* If we get here, the execvp() call failed. */
perror("execvp()");
return 1;
}
==============================[ test_getitimer.c ]==============================
#include <sys/time.h>
#include <stdio.h>

int main(int argc, char ** argv)
{
struct itimerval value;
int retval;

retval = getitimer(ITIMER_REAL, &value);
if (retval != 0) {
perror("getitimer()");
return 1;
}

printf("alarm timer value: %u sec, %u msec\n", value.it_value.tv_sec, value.it_value.tv_usec);
return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/