On Thu, 2011-12-29 at 19:54 +0100, Bernhard Reutner-Fischer wrote: > > On Dec 29, 2011 12:10 AM, "Andrei" <[email protected]> wrote: > > > > It looks broken for me. > > You can build a uClibc 0.9.32 - no problem there. > > it working fine with uClibc 0.9.30.3. > > I have build uClibc 0.9.32 using buildroot2011.08 and > > crosstool-ng-1.13.2 an crosstool-ng-1.13.0 > > > > This test faling for me at two thread model (old and NPTL) in > 0.9.32, > > but working with uClibc 0.9.30.3. (old only - NPLT not supported for > > powepc): > > > > #include <pthread.h> > > > > #include <stdio.h> > > #include <string.h> > > #include <unistd.h> > > #include <sys/types.h> > > > > #include <errno.h> > > > > > > pthread_t thread; > > > > int param = 1; > > > > void *test(void *hndl) { > > > > printf("Thread started with param: %d\n", *((int *)hndl)); > > while(1) ; > > } > > > > int start_tread() > > { > > pthread_attr_t attr; > > struct sched_param sched; > > int res; > > > > sched.sched_priority= 10; > > > > pthread_attr_init(&attr); > > pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); > > > > res = pthread_attr_setstacksize (&attr, 16*1024); > > > > if(res != 0) { > > printf("cannnot set a stack: %s.\n", strerror(res)); > > return 0; > > } > > > > res = pthread_attr_setschedpolicy(&attr, SCHED_FIFO); > > if(res != 0) { > > printf("cannnot set policy: %s.\n", strerror(res)); > > return 0; > > } > > res = pthread_attr_setschedparam(&attr, &sched); > > if(res != 0) { > > printf("cannnot set sheduler: %s.\n", strerror(res)); > > return 0; > > } > > if(getuid() == 0){ > > res = > > pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED); > > if(res != 0) { > > printf("cannnot set inherit: %s.\n", strerror(res)); > > return 0; > > } > > } > > > > res = pthread_create(&thread, &attr, test, ¶m); > > if(res != 0) { > > printf("cannnot start therad: %s.\n", strerror(res)); > > return 0; > > } > > return 1; > > } > > > > int main () > > { > > start_tread(); > > > > while(1); > > } > > > > > > Any advise? > > How does it fail? > Can you reproduce it with current master? >
It sigfault. Removing scheduling attribute make it run in NPTL case, I did not without it in case of old. 1) NPTL sigfault at libptherad/nptl/sysdeps/pthread/createthread.c:line 92 - it intentional, but I do not see what is wrong. 2) old sigfault at libptherad/linuxthreads.old/pthread.c: line 622 - it looks like stack corrupt after clone() - manager_pipe[xx] - contain garbage. I will try this on master if buldroot pooling snapshot properly later today, but I am really would like to use released version of uClibc. Andrei _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
