Juli Mallett pointed me at the following reproduceable problem on my
-current notebook with userland/kernel dated Dec 29:

paprika:~/freebsd/test/pthread> ./test
1
2
1
2
1
2
load: 0.02  cmd: test 910 [running] 0.00u 0.01s 0% 824k
1
Bus error (core dumped)
paprika:~/freebsd/test/pthread> ./test
1
2
load: 0.23  cmd: test 914 [running] 0.00u 0.01s 0% 824k
1
Bus error (core dumped)

Hitting ^T to get status information seems to break output following the
first printf after the information display.  Here's the stack trace from
the test program from the first execution above: 

(gdb) bt
#0  0x2807a559 in _pthread_mutex_trylock () from /usr/lib/libc_r.so.5
#1  0x2807a71c in _pthread_mutex_lock () from /usr/lib/libc_r.so.5
#2  0x2813598f in flockfile () from /usr/lib/libc.so.5
#3  0x2812bfd0 in vfprintf () from /usr/lib/libc.so.5
#4  0x2811a552 in printf () from /usr/lib/libc.so.5
#5  0x0804860d in thread2 (arg=0x0) at test.c:22
#6  0x280732ce in _thread_start () from /usr/lib/libc_r.so.5

The program source is attached below.

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
[EMAIL PROTECTED]      Network Associates Laboratories


#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void *
thread1(void *arg)
{

        while (1) {
                sleep(2);
                printf("1\n");
        }
}

void *
thread2(void *arg)
{

        sleep(1);
        while (1) {
                sleep(2);
                printf("2\n");
        }
}

int
main(int argc, char *argv[]) {
        pthread_t t1, t2;
        int error;

        error = pthread_create(&t1, NULL, thread1, NULL);
        error = pthread_create(&t2, NULL, thread2, NULL);

        error = pthread_join(t1, NULL);
        error = pthread_join(t2, NULL);

        return (0);
}



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to