NPTL (Native POSIX Threading Library) Tests and Trace

pingouin

HOME

gnou
 

 NPTL Test & Trace - Project Presentation

 

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:

  • 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.
You can find a complete description of our work here.

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).

 

 
Total number of hits: 
 
 

Page maintained by: Tony Reix
Last update: 2004, July 28th