Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Feb 2008 15:03:22 -0800
From:      Derek Douville <ddouville@ncircle.com>
To:        freebsd-threads@freebsd.org
Subject:   Problem with 7.0-RELEASE amd64 lib32/libthr.so support of libpthread.so 32-bit binaries
Message-ID:  <47C88F3A.3020306@ncircle.com>

next in thread | raw e-mail | index | archive | help
Hi everyone,

I need some help with threading lib32 compat programs under 7.0, which 
is supposed to fix a lot of broken areas of 6.x.  We ran into 
32bit-compat threading issues under 6.2 amd64 and started testing 
7.0-RELEASE today to see if we can get a 32-bit program that was 
compiled with -pthread to execute successfully.  So far, this is my 
environment:

(a)  FreeBSD 7.0-RELEASE amd64 installed with lib32 compatibility
(b)  /usr/ports/compat6x installed
(c)  /etc/libmap32.conf is empty

The test code that revealed the threading issues under 6.x is this:

ghost# cat pthread-crash.c
#include <stdio.h>
#include <pthread.h>

void *thread(void *data) {
   puts("Thread.");
   return NULL;
}

int main() {
   pthread_t pth;
   void *pv;
   pthread_create(&pth,NULL,thread,NULL);
   pthread_join(pth,&pv);
   return 0;
}

ghost# file pthread-crash
pthread-crash: ELF 32-bit LSB executable, Intel 80386, version 1 
(FreeBSD), dynamically linked (uses shared libs), not stripped

This code, when compiled natively on FreeBSD 6.2 i386 with -pthread,  or 
on an amd64 platform using -m32,  yields the following error messages 
from my amd64-bit test system (described above):

ghost# ./pthread-crash
Fatal error 'can not create signal daemon thread!
' at line 236 in file /usr/src/lib/libpthread/thread/thr_sig.c (errno = 22)
Abort (core dumped)

(gdb) bt
#0  0x2809bacb in pthread_testcancel ()
   from /usr/local/lib32/compat/libpthread.so.2
#1  0x28089972 in sigaction () from /usr/local/lib32/compat/libpthread.so.2
#2  0x28082cb9 in pthread_kill () from 
/usr/local/lib32/compat/libpthread.so.2
#3  0x28082534 in raise () from /usr/local/lib32/compat/libpthread.so.2
#4  0x2817162c in abort () from /usr/local/lib32/compat/libc.so.6
#5  0x2809c2fd in pthread_testcancel ()
   from /usr/local/lib32/compat/libpthread.so.2
#6  0x28087685 in sigaction () from /usr/local/lib32/compat/libpthread.so.2
#7  0x2809232c in pthread_mutexattr_init ()
   from /usr/local/lib32/compat/libpthread.so.2
#8  0x2808b410 in pthread_create () from 
/usr/local/lib32/compat/libpthread.so.2
#9  0x0804861e in main ()

Any help or feedback is greatly appreciated.

-Derek

-- 
Derek Douville (derek at ncircle.com)
Senior Platform Engineer
nCircle Network Security
W: +1-415-625-5990 YIM: douvilld




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47C88F3A.3020306>