Capítulo 34. Compilador e Ferramentas

Múltiplos erros durante a inicialização a partir de SAN sobre FCoE

Os múltiplos erros surgiram da atual implementação de inicialização a partir da Storage Area Network (SAN) usando Fibre Channel sobre Ethernet (FCoE). A Red Hat está em busca de uma versão futura do Red Hat Enterprise Linux 7 que corrija esses erros. Para uma lista dos erros afetados e das soluções alternativas (quando disponíveis), por favor entre em contato com o seu representante da equipe de suporte da Red Hat.

Valgrind não pode executar programas compilados em relação à versão anterior do Open MPI

O Red Hat Enterprise Linux 7.2 oferece suporte somente à interface binária do aplicativo (ABI) Open MPI na versão 1.10, a qual é incompatível com a versão 1.6 do Open MPI ABI anteriormente distribuída. Como consequência, os programas compilados em relação à versão anterior do Open MPI não podem ser executados sob o Valgrind incluído no Red Hat Enterprise Linux 7.2. Para contornar este problema, utilize a versão do Valgrind do Red Hat Developer Toolset para programas ligados à versão 1.6 do Open MPI.

As funções sintéticas geradas pelo GCC confundem o System Tap

A otimização do GCC pode gerar funções sintéticas para as cópias parcialmente embutidas de outras funções. Essas funções sintéticas parecem funções de primeira classe e confundem as ferramentas, tais como System Tap e GDB, pois as investigações do System Tap podem ser substituídas nos pontos de entrada tanto de funções reais quanto sintéticas. Isto pode resultar em múltiplas ocorrências de investigação do System Tap por uma única chamada da função subjacente.
Para contornar este problema, um script do System Tap pode precisar adotar contramedidas, tais como a detecção de recursão e a supressão de investigações, relacionadas às funções parciais embutidas. Por exemplo, o scrip a seguir:
probe kernel.function("can_nice").call { }
conseguiu evitar o problema descrito abaixo:
global in_can_nice% probe kernel.function("can_nice").call { in_can_nice[tid()] ++; if (in_can_nice[tid()] > 1) { next } /* real probe handler here */ } probe kernel.function("can_nice").return { in_can_nice[tid()] --; }
Observe que este script não leva em consideração todos os cenários possíveis. Ele não funcionaria como esperado no caso de, por exemplo, kprobes ou kretprobes ausentes, ou da recursão genuína desejada.

AVC do SELinux gerado quando o ABRT coleciona backtraces

Se o novo e opcional recurso do ABRT, que permite a coleção de backtraces dos processos com falhas sem precisar de gravar um arquivo de despejo de memória no disco, estiver habilitado (usando a opção CreateCoreBacktrace no arquivo de configuração /etc/abrt/plugins/CCpp.conf), uma mensagem do AVC do SELinux é gerada quando a ferramenta abrt-hook-ccpp tenta usar o acesso sigchld em um processo com falhas para obter a lista de funções na pilha do processo.

GDB mantém watchpoints ativos mesmo depois de relatá-los como ocorrências

Em alguns casos, na arquitetura 64-bit ARM, o GDB pode manter watchpoints ativos incorretamente, mesmo após relatá-los como ocorrências. Isto faz com que os watchpoints sejam atingidos pela segunda vez, e somente desta vez a indicação do hardware não é mais reconhecida como um watchpoint e é impressa como um sinal SIGTRAP genérico. Existem várias formas de contornar este problema e interromper o relatório SIGTRAP excessivo.
* Digite continue (continuar) ao ver um SIGTRAP depois de um watchpoint foi atingido.
* Instrua o GDB a ignorar o sinal SIGTRAP adicionando a seguinte linha ao seu arquivo de configuração ~/.gdbinit:
handle SIGTRAP nostop noprint
* Utilize os watchpoints de software no lugar dos seus equivalientes de hardware. Observe que a depuração é bem mais lenta com os watchpoints de software e apenas o comando watch está disponível (e não rwatch ou awatch). Adicione a seguinte linha ao seu arquivo de configuração ~/.gdbinit:
set can-use-hw-watchpoints 0

Ocorre falha na inicialização usando grubaa64.efi

Devido a problemas no pxeboot ou no arquivo de configuração PXE, a instalação do Red Hat Enterprise Linux 7.2 com o carregador de inicialização grubaa64.efi 7.2 falha ou experimenta grande atraso na inicialização do sistema operacional. Como uma solução alternativa, use o arquivo grubaa64.efi 7.1 no lugar do arquivo grubaa64.efi 7.2, ao instalar o Red Hat Enterprise Linux 7.2.

O recurso MPX no GCC exige a versão Red Hat Developer Toolset da biblioteca libmpx

A biblioteca libmpxwrappers não possui a versão gcc-libraries da biblioteca libmpx. Como resultado, o recurso Extensões de Proteção de Memória (MPX) pode não funcionar adequadamente no GCC e o aplicativo pode não vincular corretamente. Para contornar este problema, use a versão Red Hat Developer Toolset 4.0 da biblioteca libmpx.