Check the return value of pthread_create. Update the docs with known issue on Loongso...
authorXianyi Zhang <traits.zhang@gmail.com>
Tue, 6 Sep 2011 18:27:33 +0000 (18:27 +0000)
committerXianyi Zhang <traits.zhang@gmail.com>
Tue, 6 Sep 2011 18:27:33 +0000 (18:27 +0000)
README
driver/others/blas_server.c

diff --git a/README b/README
index 2487415..b67db11 100644 (file)
--- a/README
+++ b/README
@@ -72,6 +72,7 @@ Please see Changelog.txt to obtain the differences between GotoBLAS2 1.13 BSD ve
 9.Known Issues
 * The number of CPUs/Cores should less than or equal to 8*sizeof(unsigned long). On 64 bits, the limit 
   is 64. On 32 bits, it is 32.
+* On Loongson 3A. make test would be failed because of pthread_create error. The error code is EAGAIN. However, it will be OK when you run the same testcase on shell. I don't think this is a bug in OpenBLAS. 
 
 10. Specification of Git Branches
 We used the git branching model in this article (http://nvie.com/posts/a-successful-git-branching-model/). 
index a026ccb..66067a0 100644 (file)
@@ -500,6 +500,7 @@ static int blas_monitor(void *arg){
 /* Initializing routine */
 int blas_thread_init(void){
   BLASLONG i;
+  int ret;
 #ifdef NEED_STACKATTR
   pthread_attr_t attr;
 #endif
@@ -545,12 +546,16 @@ int blas_thread_init(void){
       pthread_cond_init (&thread_status[i].wakeup, NULL);
       
 #ifdef NEED_STACKATTR
-      pthread_create(&blas_threads[i], &attr, 
+      ret=pthread_create(&blas_threads[i], &attr, 
                     (void *)&blas_thread_server, (void *)i);
 #else
-      pthread_create(&blas_threads[i], NULL, 
+      ret=pthread_create(&blas_threads[i], NULL, 
                     (void *)&blas_thread_server, (void *)i);
 #endif
+      if(ret!=0){
+       fprintf(STDERR,"OpenBLAS: pthread_creat error in blas_thread_init function. Error code:%d\n",ret);
+       exit(1);
+      }
     }
 
 #ifdef MONITOR