Date: Mon, 12 Sep 2005 03:55:13 GMT From: Justin Shumaker <justin@arl.army.mil> To: freebsd-gnats-submit@FreeBSD.org Subject: threads/86004: libthr broken on amd64 Message-ID: <200509120355.j8C3tDgc028074@www.freebsd.org> Resent-Message-ID: <200509120400.j8C40dcF068556@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 86004 >Category: threads >Synopsis: libthr broken on amd64 >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-threads >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Sep 12 04:00:38 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Justin Shumaker >Release: 5.4 AMD64 >Organization: U.S. Army Research Laboratory >Environment: FreeBSD xxx.army.mil 5.4-RELEASE-p6 FreeBSD 5.4-RELEASE-p6 #0: Wed Sep 7 17:41:09 EST 2005 >Description: maping libpthread to libthr on AMD-64 causes multithreaded apps to core dump. >How-To-Repeat: Write a simple multithreaded test program in C. Here is a snippet of my test appplication. I have also tested with 3 other threaded apps all with the same results, so before complaining about a line of code in the below code, try cooking up your own. The application runs with libpthread. #include <stdio.h> #include <pthread.h> #define WORK_SIZE 1024*128*8 int queue; void* work(void *ptr) { unsigned int i, q; float a; q = queue; while(q--) { a = 1; for(i = 0; i < 128; i++) a *= 1.001; } return 0; } int main(int argc, char *args[]) { unsigned int i, tnum, n; pthread_t t[8]; if(argc < 2) { fprintf(stderr, "thread argument [1..8] required.\n"); exit(1); } tnum = atoi(args[1]); if(tnum < 1 || tnum > 8) { fprintf(stderr, "thread number must be from 1 to 8\n"); exit(1); } for(n = 0; n < 4; n++) { queue = WORK_SIZE / tnum; /* Launch the threads */ for(i = 0; i < tnum; i++) pthread_create(&t[i], 0, work, 0); /* Join the threads and finish */ for(i = 0; i < tnum; i++) { pthread_join(t[i], 0); printf("done: %d\n", i); } } exit(0); } >Fix: No idea, will require combing the libthr source and finding 64-bit unfriendly code or something it's tickling in the kernel. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509120355.j8C3tDgc028074>