<?xml version="1.0"?>
<paste-with-annotations>
  <paste>
    <number>
      <integer>40932</integer>
    </number>
    <user>
      <string>slava</string>
    </user>
    <title>
      <string>memcpy + signal handler interaction test case</string>
    </title>
    <contents>
      <string>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;signal.h&gt;
#include &lt;strings.h&gt;
#include &lt;sys/time.h&gt;

void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
	/* no-op */
}

void init_signal_handler(void)
{
	struct sigaction profile_sigaction;
	memset(&amp;profile_sigaction,0,sizeof(struct sigaction));
	sigemptyset(&amp;profile_sigaction.sa_mask);
	profile_sigaction.sa_sigaction = dummy_signal_handler;
	profile_sigaction.sa_flags = SA_SIGINFO;
	sigaction(SIGALRM,&amp;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,&amp;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 &lt; N; i++) src[i] = i;

	init_signal_handler();
	init_interval_timer();

	int iterations;

#define MAX_ITERATIONS 100000000

	for(iterations = 0; iterations &lt; MAX_ITERATIONS; iterations++)
	{
		memset(dst,0,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != 0)
			{
				printf(&quot;Test failed after %d iterations\n&quot;,iterations);
				abort();
			}
		}

		memcpy(dst,src,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != i)
			{
				printf(&quot;Test failed after %d iterations\n&quot;,iterations);
				abort();
			}
		}
	}

	printf(&quot;Tests passed after %d iterations\n&quot;,iterations);
}</string>
    </contents>
    <universal-time>
      <integer>3387670748</integer>
    </universal-time>
    <channel>
      <string>#macdev</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <null/>
    </is-unicode>
  </paste>
  <annotation>
    <number>
      <integer>3</integer>
    </number>
    <user>
      <string>slava</string>
    </user>
    <title>
      <string>fix calloc call to not over-allocate</string>
    </title>
    <contents>
      <string>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;signal.h&gt;
#include &lt;strings.h&gt;
#include &lt;sys/time.h&gt;

void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
	/* no-op */
}

void init_signal_handler(void)
{
	struct sigaction profile_sigaction;
	memset(&amp;profile_sigaction,0,sizeof(struct sigaction));
	sigemptyset(&amp;profile_sigaction.sa_mask);
	profile_sigaction.sa_sigaction = dummy_signal_handler;
	profile_sigaction.sa_flags = SA_SIGINFO;
	sigaction(SIGALRM,&amp;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,&amp;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 &lt; N; i++) src[i] = i;

	init_signal_handler();
	init_interval_timer();

	int iterations;

#define MAX_ITERATIONS 100000000

	for(iterations = 0; iterations &lt; MAX_ITERATIONS; iterations++)
	{
		memset(dst,0,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != 0)
			{
				printf(&quot;memset failed after %d iterations\n&quot;,iterations);
				int j;
				for(j = 0; j &lt; N; j++)
					printf(&quot;%d\n&quot;,dst[j]);
				abort();
			}
		}

		memcpy(dst,src,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != i)
			{
				printf(&quot;memcpy failed after %d iterations\n&quot;,iterations);
				int j;
				for(j = 0; j &lt; N; j++)
					printf(&quot;%d\n&quot;,dst[j]);
				abort();
			}
		}
	}

	printf(&quot;Tests passed after %d iterations\n&quot;,iterations);
}</string>
    </contents>
    <universal-time>
      <integer>3387671435</integer>
    </universal-time>
    <channel>
      <string>#macdev</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <null/>
    </is-unicode>
  </annotation>
  <annotation>
    <number>
      <integer>2</integer>
    </number>
    <user>
      <string>slyrus</string>
    </user>
    <title>
      <string>results for slava</string>
    </title>
    <contents>
      <string>memcpy failed after 36757157 iterations
0
1
0
3
Abort trap
</string>
    </contents>
    <universal-time>
      <integer>3387671322</integer>
    </universal-time>
    <channel>
      <string>#macdev</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <null/>
    </is-unicode>
  </annotation>
  <annotation>
    <number>
      <integer>1</integer>
    </number>
    <user>
      <string>slava</string>
    </user>
    <title>
      <string>updated test case</string>
    </title>
    <contents>
      <string>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;signal.h&gt;
#include &lt;strings.h&gt;
#include &lt;sys/time.h&gt;

void dummy_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
	/* no-op */
}

void init_signal_handler(void)
{
	struct sigaction profile_sigaction;
	memset(&amp;profile_sigaction,0,sizeof(struct sigaction));
	sigemptyset(&amp;profile_sigaction.sa_mask);
	profile_sigaction.sa_sigaction = dummy_signal_handler;
	profile_sigaction.sa_flags = SA_SIGINFO;
	sigaction(SIGALRM,&amp;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,&amp;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 &lt; N; i++) src[i] = i;

	init_signal_handler();
	init_interval_timer();

	int iterations;

#define MAX_ITERATIONS 100000000

	for(iterations = 0; iterations &lt; MAX_ITERATIONS; iterations++)
	{
		memset(dst,0,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != 0)
			{
				printf(&quot;memset failed after %d iterations\n&quot;,iterations);
				int j;
				for(j = 0; j &lt; N; j++)
					printf(&quot;%d\n&quot;,dst[j]);
				abort();
			}
		}

		memcpy(dst,src,N * sizeof(int));
		for(i = 0; i &lt; N; i++)
		{
			if(dst[i] != i)
			{
				printf(&quot;memcpy failed after %d iterations\n&quot;,iterations);
				int j;
				for(j = 0; j &lt; N; j++)
					printf(&quot;%d\n&quot;,dst[j]);
				abort();
			}
		}
	}

	printf(&quot;Tests passed after %d iterations\n&quot;,iterations);
}</string>
    </contents>
    <universal-time>
      <integer>3387671195</integer>
    </universal-time>
    <channel>
      <string>#macdev</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <null/>
    </is-unicode>
  </annotation>
</paste-with-annotations>