#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <strings.h>
#include <sys/time.h>
void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
}
void init_signal_handler(void)
{
struct sigaction profile_sigaction;
memset(&profile_sigaction,0,sizeof(struct sigaction));
sigemptyset(&profile_sigaction.sa_mask);
profile_sigaction.sa_sigaction = dummy_signal_handler;
profile_sigaction.sa_flags = SA_SIGINFO;
sigaction(SIGALRM,&profile_sigaction,NULL);
}
void init_interval_timer(void)
{
struct itimerval timerval;
timerval.it_interval.tv_sec = 0;
timerval.it_interval.tv_usec = 10 * 1000;
timerval.it_value = timerval.it_interval;
setitimer(ITIMER_REAL,&timerval,NULL);
}
static int N;
int main(int argc, char **argv)
{
N = 4;
int *src = calloc(20,N);
int *dst = calloc(20,N);
int i;
for(i = 0; i < N; i++) src[i] = i;
init_signal_handler();
init_interval_timer();
int iterations;
#define MAX_ITERATIONS 100000000
for(iterations = 0; iterations < MAX_ITERATIONS; iterations++)
{
memset(dst,0,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != 0)
{
printf("Test failed after %d iterations\n",iterations);
abort();
}
}
memcpy(dst,src,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != i)
{
printf("Test failed after %d iterations\n",iterations);
abort();
}
}
}
printf("Tests passed after %d iterations\n",iterations);
}#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <strings.h>
#include <sys/time.h>
void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
}
void init_signal_handler(void)
{
struct sigaction profile_sigaction;
memset(&profile_sigaction,0,sizeof(struct sigaction));
sigemptyset(&profile_sigaction.sa_mask);
profile_sigaction.sa_sigaction = dummy_signal_handler;
profile_sigaction.sa_flags = SA_SIGINFO;
sigaction(SIGALRM,&profile_sigaction,NULL);
}
void init_interval_timer(void)
{
struct itimerval timerval;
timerval.it_interval.tv_sec = 0;
timerval.it_interval.tv_usec = 10 * 1000;
timerval.it_value = timerval.it_interval;
setitimer(ITIMER_REAL,&timerval,NULL);
}
static int N;
int main(int argc, char **argv)
{
N = 4;
int *src = calloc(N,sizeof(int));
int *dst = calloc(N,sizeof(int));
int i;
for(i = 0; i < N; i++) src[i] = i;
init_signal_handler();
init_interval_timer();
int iterations;
#define MAX_ITERATIONS 100000000
for(iterations = 0; iterations < MAX_ITERATIONS; iterations++)
{
memset(dst,0,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != 0)
{
printf("memset failed after %d iterations\n",iterations);
int j;
for(j = 0; j < N; j++)
printf("%d\n",dst[j]);
abort();
}
}
memcpy(dst,src,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != i)
{
printf("memcpy failed after %d iterations\n",iterations);
int j;
for(j = 0; j < N; j++)
printf("%d\n",dst[j]);
abort();
}
}
}
printf("Tests passed after %d iterations\n",iterations);
}memcpy failed after 36757157 iterations
0
1
0
3
Abort trap
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <strings.h>
#include <sys/time.h>
void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
}
void init_signal_handler(void)
{
struct sigaction profile_sigaction;
memset(&profile_sigaction,0,sizeof(struct sigaction));
sigemptyset(&profile_sigaction.sa_mask);
profile_sigaction.sa_sigaction = dummy_signal_handler;
profile_sigaction.sa_flags = SA_SIGINFO;
sigaction(SIGALRM,&profile_sigaction,NULL);
}
void init_interval_timer(void)
{
struct itimerval timerval;
timerval.it_interval.tv_sec = 0;
timerval.it_interval.tv_usec = 10 * 1000;
timerval.it_value = timerval.it_interval;
setitimer(ITIMER_REAL,&timerval,NULL);
}
static int N;
int main(int argc, char **argv)
{
N = 4;
int *src = calloc(20,N);
int *dst = calloc(20,N);
int i;
for(i = 0; i < N; i++) src[i] = i;
init_signal_handler();
init_interval_timer();
int iterations;
#define MAX_ITERATIONS 100000000
for(iterations = 0; iterations < MAX_ITERATIONS; iterations++)
{
memset(dst,0,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != 0)
{
printf("memset failed after %d iterations\n",iterations);
int j;
for(j = 0; j < N; j++)
printf("%d\n",dst[j]);
abort();
}
}
memcpy(dst,src,N * sizeof(int));
for(i = 0; i < N; i++)
{
if(dst[i] != i)
{
printf("memcpy failed after %d iterations\n",iterations);
int j;
for(j = 0; j < N; j++)
printf("%d\n",dst[j]);
abort();
}
}
}
printf("Tests passed after %d iterations\n",iterations);
}