On Mon, Oct 21, 2002 at 04:48:34PM +0300, Peter Pentchev wrote:
> On Mon, Oct 21, 2002 at 03:24:08PM +0200, Linus Kendall wrote:
> > m?n 2002-10-21 klockan 14.45 skrev Peter Pentchev:
> > > On Mon, Oct 21, 2002 at 01:35:59PM +0200, Linus Kendall wrote:
> > > > Hi,
> > > > 
> > > > I'm trying to port a heavily threaded application from Linux (Debian
> > > > 3.0, 2.4.19) to
> > > > FreeBSD (4.6-RELEASE). The program compiles successfully using gcc with
> > > > -pthreads. But, when I try to run the application I get the following
> > > > error after a while (after spawning 11 threads):
> > > > 
> > > > Fatal error 'siglongjmp()ing between thread contexts is undefined by
> > > > POSIX 1003.1' at line ? in file
> > > > /usr/src/lib/libc_r/uthread/uthread_jmp.c (errno = ?)
> > > > Abort trap - core dumped
> > > > 
> > > > It always crashes at the same point. Under Linux it works perfectly
> > > > fine.
> > > > I also tried to compile with linuxthreads only to get a segfault
> > > > directly when the program tries to spawn the first thread. 
> > > > 
> > > > GCC version on Linux: 2.95.4 20011002
> > > > GCC version on FreeBSD: 2.95.3 20010315
> > > > 
> > > > GCC/G++ command-line: g++ -g -Wall -I. `curl-config --cflags` 
> > > > -fsjlj-exceptions -D_THREAD_SAFE -D_REENTRANT -pthread `curl-config
> > > > --libs` 
> > > 
> > > Just for the record: what exactly do 'curl-config --cflags' and
> > > 'curl-config --libs' output?
> > 
> > Libcurl is an HTTP-library which is said to be threadsafe (and also
> > works normally under Linux).
> 
> I know what libcurl is; as a matter of fact, I happen to be the
> maintainer of the ftp/curl port :)  That's partly the reason why I am
> interested in your problem, especially given what you report below..
> 
> I was asking about the specific output of the compiler flags and the
> libraries that cURL reports as needed, to see if there were any
> conflicts there with any of the other compiler flags.
> 
> > I've been looking at it and it seems that the problem was based on
> > the fact that libcurl triggers an SIGALARM which in Linux isn't a
> > problem but for which I needed to define a signal handler (ie. block)
> > in *BSD.
> 
> This is interesting; can you produce a simple testcase?  If not, I will
> be able to take a look at it some time later today or tomorrow, but not
> right now :(

Oh BTW.. libcurl is indeed threadsafe, with a single exception,
mentioned in the THREADS section of the libcurl(3) manual page.. is
there any chance that this is related to the problem you are having?

G'luck,
Peter

-- 
Peter Pentchev  [EMAIL PROTECTED]        [EMAIL PROTECTED]
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
If this sentence were in Chinese, it would say something else.

Attachment: msg37497/pgp00000.pgp
Description: PGP signature

Reply via email to