And problems regarding -lthr (1:1 KSE)

Mike Makonnen mtm at identd.net
Thu Jul 31 22:48:09 PDT 2003


On Fri, Aug 01, 2003 at 12:17:08PM +0900, TeJun Huh wrote:
>  I forgot to mention about -lthr (1:1 KSE threading) related problems.
> 
>  1. If the program is compiled with '-static -lthr', the program
> crashes at the first thread creation.  Stack trace follows.

Are you using 5.1-RELEASE or -CURRENT ? I think this has already
been fixed in -CURRENT.

>  2. Without -static, the program works fine, but pthread_create()
> fails with EAGAIN at thread count 110.  B.T.W. pthread_create() return
> value handling was wrong in the example program.  It always confuses
> me. :-( How can I increase this limit?  Again, I'm looking for
> something like ten thousands.

This is problematic because on i386, libthr uses the LDTs, which
are limited to 9182. But if I'm not mistaken the first NLDT (17)
entries are already in use so in reality you can have only
(9182 - NLDT) threads. You can do this by changing MAXTHR 
in src/lib/libthr/arch/i386/i386/_setcurthread.c.  You might also
want to bump up UMTX_QUEUES in src/sys/kern/kern_umtx.c if you
do that.

I am not aware of any limits on alpha or sparc64 (but then I'm
not knowledgeable about either :)

BTW, libthr uses some of the same code as KSE, but it is not
based on KSE.

Cheers. 
-- 
Mike Makonnen  | GPG-KEY: http://www.identd.net/~mtm/mtm.asc
mtm at identd.net | D228 1A6F C64E 120A A1C9  A3AA DAE1 E2AF DBCC 68B9
mtm at FreeBSD.Org| FreeBSD - Unleash the Daemon!


More information about the freebsd-threads mailing list