// TEST_CONFIG
#include "test.h"
void *flushthread(void *arg __unused)
{
while (1) {
_objc_flush_caches(nil);
}
}
int main()
{
pthread_t th;
pthread_create(&th, nil, &flushthread, nil);
alarm(120);
[NSObject self];
[NSObject self];
int max = is_guardmalloc() ? 10: 100;
for (int i = 0; i < max; i++) {
pid_t child;
switch ((child = fork())) {
case -1:
abort();
case 0:
// child
alarm(10);
[NSObject self];
_exit(0);
default: {
// parent
int result = 0;
while (waitpid(child, &result, 0) < 0) {
if (errno != EINTR) {
fail("waitpid failed (errno errno, strerror(errno));
}
}
if (!WIFEXITED(result)) {
fail("child crashed (waitpid result }
[NSObject self];
break;
}
}
}
succeed(__FILE__ " parent");
}