sparc64/53670: pthreads implementation on 5.1-Release sparc64 not working

Thomas Moestl t.moestl at tu-bs.de
Tue Jun 24 08:50:30 PDT 2003


The following reply was made to PR sparc64/53670; it has been noted by GNATS.

From: Thomas Moestl <t.moestl at tu-bs.de>
To: Steven Haywood <steven at natural.keybaud.org>
Cc: FreeBSD-gnats-submit at freebsd.org
Subject: Re: sparc64/53670: pthreads implementation on 5.1-Release sparc64 not working
Date: Tue, 24 Jun 2003 17:50:22 +0200

 On Tue, 2003/06/24 at 10:34:17 +0100, Steven Haywood wrote:
 > >Description:
 > Code that uses pthreads hangs (mysql, python etc)
 > 	
 > >How-To-Repeat:
 > 
 > -bash-2.05b$ cat conftest.c
 > ##########################################
 > #include <pthread.h>
 > 
 > void* routine(void* p){return NULL;}
 > 
 > int main(){
 >   pthread_t p;
 >   if(pthread_create(&p,NULL,routine,NULL)!=0)
 >     return 1;
 >   (void)pthread_detach(p);
 >   return 0;
 > }
 > ###########################################
 > -bash-2.05b$ gcc -o test -lc_r conftest.c
 > -bash-2.05b$ truss ./test
 > mmap(0x0,7056,0x3,0x1000,-1,0x0)                 = 1075978240 (0x40222000)
 > munmap(0x40222000,0x1b90)                        = 0 (0x0)
 > __sysctl(0x7fdfffff4f0,0x2,0x40323110,0x7fdfffff4e8,0x0,0x0) = 0 (0x0)
 > [...]
 > setitimer(0x2,0x7fdfffff930,0x0)                 = 0 (0x0)
 > SIGNAL 27
 > SIGNAL 27
 > gettimeofday(0x40443390,0x0)                     = 0 (0x0)
 > sigprocmask(0x3,0x40443418,0x0)                  = 0 (0x0)
 > sigreturn(0x7fdfffff250)                         = 1076043776 (0x40232000)
 > poll(0x216000,0x0,0x0)                           = 0 (0x0)
 > 
 > 
 > Nothing else happens until I Ctrl-C it. Note that in this case I waited about 3 minutes.
 > ^CSIGNAL 2
 > poll(0x216000,0x1,0xffffffffffffffff)            ERR#4 'Interrupted system call'
 > SIGNAL 2
 > SIGNAL 2
 > process exit, rval = 2
 
 I cannot reproduce this. When the process is hanging, does it loop
 (using all available CPU), or is it sleeping (and if it is, in which
 state)? Can you please also try pressing ^T? This should make the
 process generate a state dump in /tmp/uthread.dump.<pid>.<serial>,
 which should be interesting. 
 
 	- Thomas
 
 -- 
 Thomas Moestl <t.moestl at tu-bs.de>	http://www.tu-bs.de/~y0015675/
               <tmm at FreeBSD.org>		http://people.FreeBSD.org/~tmm/
 PGP fingerprint: 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C


More information about the freebsd-sparc64 mailing list