The goal of this project is almost the same as the Kernel Janitors project,
but we aim to improve the NPTL library instead of the kernel.
The NPTL comes as a replacement for the LinuxThreads library. It is currenly bundled
as an add-on for the GNU libc project. It is the default pthread library
for some distributions (mainly Red Hat), and might become the standard in a few years.
There are several reasons for this: this library is much more performant on certain operations,
such as thread creation, and barely never slower than the old library. But performance is not the
only reason: the old library was not fully conformant to POSIX, which mean when someone wanted to
port an application from a POSIX platform (Solaris, AIX, ...) to Linux, a lot of work was required.
The biggest divergence was in the signal handling, and in the thread entity which was almost
a process. As threads are normaly used for small tasks, it is useless if starting a threads requires
more time than computing the task in the main thread. NPTL solves all those issues.
As the kernel is in constant evolution, the glibc as a whole and the NPTL in parlicular change frequently as well.
There are regular modifications, bug fixes, improvements, new features (and new bugs)...
The goal of this project is to enhance the quality level of the NPTL. This mean, either find the bugs
in the current library and fix them, or be able to tell (and prove obviously) that the library is
bug-free. To achieve this goal, we want a testsuite that is well documented, and that will
check that every routine inside the NPTL does respect the POSIX directives, is functionally good (it does what is expected),
does not leak resources (stress-resistant), and has good performances (scalable).
As there are about 150 routines in the NPTL this is a huge task. The good news is that there is
already an Open Source project dealing with a similar issue: the Open POSIX Test Suite.
So, the role of our project here is:
You can find a complete description of our work here.
- To analyse the POSIX standard, the existing tests from the Open POSIX Test Suite, and
to list the features which are not tested yet.
- To specify how to test each remaining feature, when it is possible.
- To provide volunteer contributors with this description, or to write the test when nobody
volunteers (well, testing is surely an important task, but it is also quite boring, isn't it?)
- To ensure that the tests being written are widely used. So, we must provide high quality tests,
and run them frequently on different platforms.
As an addition, by analysing hangs or strange behaviors in a lot of applications, we
came to the conclusion that most of those bugs are in user code, which misuse the
POSIX routines. This kind of bug is very difficult to fix, as it can depend on the load of
the machine for example. To help tracking those problems, as well as to prove possible bugs
into the library, we are also working on a trace system for the NPTL.
If you are interested in contributing to our project, for example in writing testcases,
please contact us by email (see below).