[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