Re: Thread and process dentifiers (CPU affinity, kill)

Nix
2005-05-23T12:57:10Z

On 20 May 2005, Lennart Sorensen prattled cheerily:
> Maybe Debian compiled their glibc to not do NPTL on i386 yet. Not sure.

This is not the case. Proof from ps -FT output:

mysql 8473 8473 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8475 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8476 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8477 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8478 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8479 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8480 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8481 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld
mysql 8473 8482 8472 0 29110 14056 0 May22 pts/1 /usr/sbin/mysqld

> Hmm, after checking, it turns out if you use errno in your program, it
> drops to linuxthreads, while using #include <errno.h> makes it able to
> use NPTL when using 2.6 kernel.

This is a distribution-specific patch. glibc as shipped by the FSF simply
refuses to run programs that reference the errno symbol: errno is no
longer an exported symbol at all. (This is reasonable, as such programs
would fail to work on a multithreaded NPTL program in any case.)

The only valid way to gain access to the errno symbol is to
#include <errno.h>. This has been true for as long as glibc2 has existed.

--
`Once again, I must remark on the far-reaching extent of my
ladylike nature.' --- Rosie Taylor