diff --git a/run.c b/run.c
index 05c7155ddb1f68932cac9395191c8f0a46dfeeee..b7e110c424b096c3fc32fe3fa76ea76df5b3ea44 100755
--- a/run.c
+++ b/run.c
@@ -311,19 +311,27 @@ void thread_create_join(struct buffer_rc *ptr1,struct buffer_cw *ptr2,struct buf
     pthread_t reader;
     pthread_t calculators[N];
     pthread_t writer;
-    pthread_create(&reader,NULL,&reading,ptr1);
+    int err;
+    err=pthread_create(&reader,NULL,&reading,ptr1);
+    if(err != 0){return;}
+
     for (int i = 0; i < N; i++)
     {
-        pthread_create(&calculators[i],NULL,&calculating,ptr3);
+        err=pthread_create(&calculators[i],NULL,&calculating,ptr3);
+        if(err != 0){return;}
     }
-    pthread_create(&writer,NULL,&writing,ptr2);
+    err = pthread_create(&writer,NULL,&writing,ptr2);
+    if(err != 0){return;}
 
-    pthread_join(reader,NULL);
+    err = pthread_join(reader,NULL);
+    if(err != 0){return;}
     for (int i = 0; i < N; i++)
     {
-        pthread_join(calculators[i],NULL);
+        err = pthread_join(calculators[i],NULL);
+        if(err != 0){return;}
     }
-    pthread_join(writer,NULL);
+    err = pthread_join(writer,NULL);
+    if(err != 0){return;}
 }
 
 void mut_sem_destroy(void){
diff --git a/run.o b/run.o
index b0081eb4a3921755482a912e35e3db220d1093b7..3e766cf249ea70db8c7b05536ae80ffaa4a545d5 100644
Binary files a/run.o and b/run.o differ