[uClibc]pthreads in mips ...
David Koo
nothing2n at yahoo.com
Fri Sep 20 14:10:34 UTC 2002
Hi All,
Do uclibc pthreads in mips run properly? The following code I've
written does not seem to run at all (no printfs, nothing) when I
(compile and) run it on a mips board. The same thing runs when
compiled (with glibc pthreads) for i386. I tried 'strace'ing it - the
'strace' just stops after a while ... I need a <Ctrl-C> to get back
the shell prompt. I've pasted the strace output as well.
Oh yes, uClibc-0.9.15.
Anybody has any clues? Am I doing something wrong?
Thanks for any help.
--
Koo
----- test code: mallocpth.c -------
#include <unistd.h>
#include <malloc.h>
#include <pthread.h>
void *thread_start(void *unused)
{
while (1) {
printf("New Thread\n");
sleep(3);
}
return NULL; /* should never get here */
}
int main(void)
{
pthread_t mythread;
if (pthread_create(&mythread, NULL, thread_start, (void *)"unused") != 0) {
perror("pthread_create() failed");
exit(1);
}
printf("New thread created.\n");
while (1) {
printf("original thread\n");
sleep(3);
}
exit(0);
}
----- end of test code --------
----- strace output -----------
#
# strace pthtest
execve("/usr/bin/pthtest", ["pthtest"], [/* 5 vars */]) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0) = 0x2aaae000
mprotect(0x2aaa8000, 22208, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x400000, 1904, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
readlink("/lib/ld-uClibc.so.0", "ld-uClibc-0.9.15.so", 1024) = 19
open("/lib/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\000"..., 4096) = 4096
old_mmap(NULL, 352256, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaee000
old_mmap(0x2aaee000, 60456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aaee000
old_mmap(0x2ab3c000, 29404, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x2ab3c000
close(3) = 0
mprotect(0x2aaee000, 60456, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
open("/lib/libc.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\223"..., 4096) = 4096
old_mmap(NULL, 622592, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab44000
old_mmap(0x2ab44000, 341904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ab44000
old_mmap(0x2abd7000, 11048, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x53000) = 0x2abd7000
old_mmap(0x2abda000, 7976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2abda000
close(3) = 0
mprotect(0x2ab44000, 341904, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x400000, 1904, PROT_READ|PROT_EXEC) = 0
mprotect(0x2aaee000, 60456, PROT_READ|PROT_EXEC) = 0
mprotect(0x2ab44000, 341904, PROT_READ|PROT_EXEC) = 0
mprotect(0x2aaa8000, 22208, PROT_READ|PROT_EXEC) = 0
ioctl(0, 0x540d, {B9600 opost isig icanon echo ...}) = 0
ioctl(1, 0x540d, {B9600 opost isig icanon echo ...}) = 0
getpid() = 97
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
setrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=1073741823}) = 0
rt_sigaction(SIGRT_0, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGRT_1, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGRT_2, {SIG_DFL}, NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [32], NULL, 16) = 0
(blank lines inserted as a result of <Enter>)
----- end of strace output ------
More information about the uClibc
mailing list