diff --git a/src/test/thread/thread_test.c b/src/test/thread/thread_test.c
index 0782e8c66bb7b5fd4836ca4e553ab2c56cb139fe..6a8182991295274e1b353e8dc4d9340cd8e9d86a 100644
--- a/src/test/thread/thread_test.c
+++ b/src/test/thread/thread_test.c
@@ -150,6 +150,7 @@ main(int argc, char *argv[])
 	pthread_t	thread1,
 				thread2;
 	int			fd;
+	int			rc;
 
 #ifdef WIN32
 	WSADATA		wsaData;
@@ -199,8 +200,23 @@ main(int argc, char *argv[])
 	/* Hold lock until we are ready for the child threads to exit. */
 	pthread_mutex_lock(&init_mutex);
 
-	pthread_create(&thread1, NULL, (void *(*) (void *)) func_call_1, NULL);
-	pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
+	rc = pthread_create(&thread1, NULL, (void *(*) (void *)) func_call_1, NULL);
+	if (rc != 0)
+	{
+		fprintf(stderr, "Failed to create thread 1: %s **\nexiting\n",
+				strerror(rc));
+		exit(1);
+	}
+	rc = pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
+	if (rc != 0)
+	{
+		/*
+		 * strerror() might not be thread-safe, and we already spawned thread
+		 * 1 that uses it
+		 */
+		fprintf(stderr, "Failed to create thread 2 **\nexiting\n");
+		exit(1);
+	}
 
 	while (thread1_done == 0 || thread2_done == 0)
 		sched_yield();			/* if this is a portability problem, remove it */