NPTL, também conhecido como Native POSIX Thread Library, é o novo sistema de threading do kernel 2.6. O NPTL promete melhor compatibilidade com o padrão POSIX, maior escalabilidade e maior desempenho na criação e destruição de threads, colocando o Linux em pé de igualdade com os Unix comerciais em termos de alto desempenho (e custando muuuuuuuuito menos! 🙂 Para os chegados em tecnicalidades ou estudiosos de sistemas operacionais, vale a leitura do paper descritivo da biblioteca em:
A RedHat vem implementando um backport do NPTL para os seus kernels 2.4 desde o RedHat 9 e o kernel do Fedora Core 1 tem o mesmo patch.
Só que alguns programas podem crashar alegremente, deixando você com um segfault na mão e uma cara de tacho. Exemplos clássicos são o IBM JRE e o Sun JVM (antes do 1.4.1, bem, você deveria estar utilizando o 1.4.2 mesmo…). Neste caso, LD_ASSUME_KERNEL é seu amigo.
LD_ASSUME_KERNEL é uma variável de ambiente que diz ao kernel para utilizar o velho LinuxThreads em vez do NPTL, com isso deixando o programa problemático mais feliz. Pode assumir os valores 2.2.5, 2.4.1 ou 2.4.19 (ou seja, emulação do comportamento de kernels específicos). Uma boa política é utilizar um alias do shell para o programa crashento, por exemplo: |