NPTL, Exec-Shield e outros palavrões que fazem seus programas crasharem

O que são NPTL, Exec-Shield e porque meus programas de uma hora para outra crasham adoidamente? Se você usa RedHat 9, Fedora Core 1, kernel 2.6 e/ou kernel 2.4 patcheado, seus problemas podem se resolver após a leitura deste artigo.

[ Hits: 21.637 ]

Por: Cesar Cardoso em 19/12/2003


NPTL



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:

alias programa_crashento="LD_ASSUME_KERNEL=2.4.1 programa_crashento"
    Próxima página

Páginas do artigo
   1. NPTL
   2. Exec-Shield
   3. Palavras finais
Outros artigos deste autor

Para não se perder no mundo da memória Flash

As incríveis aventuras de um RedHat 9 migrando para kernel 2.6

Porque o RedHat 9 tem problemas com teclados US-International?

Fazendo o kernel 2.6 resolver o problema da montagem de discos USB

Máquinas virtuais

Leitura recomendada

Compile e empacote o kernel com processadores ociosos em sua rede utilizando distcc, ccache e kernel-package no Debian

Ativando zRAM no Slackware

Instalando Slackware 10.2 em HDs SATA

UZIX - O Linux do MSX (Z80)

Compilação do kernel passo-a-passo

  
Comentários
[1] Comentário enviado por arknoid em 22/12/2003 - 16:52h

bahm blz de artigo cesar ficou bem tri e agora posso tentar rodar as tralhas que me encomodavam!
qualquer coisa vou te encomodar!

[2] Comentário enviado por PlainSpooky em 23/12/2003 - 16:34h

Só uma correção...

ao invés de "cat 0 > /proc/sys/kernel/exec-shield" usa-se "echo 0 > /proc/sys/kernel/exec-shield", uma distração boba que vez ou outra em também cometo. :)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts