8.10. Compiladores e ferramentas de desenvolvimento

Objetos compartilhados não deslocados e não inicializados não mais resultam em falhas se o dlopen falhar

Anteriormente, se a chamada dlopen falhou, o linker dinâmico glibc não removia objetos compartilhados com a marca NODELETE antes de relatar o erro. Conseqüentemente, os objetos compartilhados não localizados e não inicializados permaneceram na imagem do processo, resultando eventualmente em falhas de afirmação ou travamentos. Com esta atualização, o carregador dinâmico usa um estado NODELETE pendente para remover objetos compartilhados em caso de falha de dlopen, antes de marcá-los como NODELETE permanentemente. Como resultado, o processo não deixa nenhum objeto não deslocado para trás. Além disso, falhas de amarração preguiçosas enquanto os construtores e destruidores ELF executam agora terminam o processo.

(BZ#1410154)

As funções avançadas SIMD na arquitetura ARM de 64 bits não mais se confundem quando resolvidas preguiçosamente

Anteriormente, o novo Padrão de Chamada de Procedimento Vetorial (PCS) para SIMD Avançado não salvavava e restaurava corretamente certos registros salvos de calle quando resolvia preguiçosamente as funções do SIMD Avançado. Como conseqüência, os binários poderiam se comportar mal em tempo de execução. Com esta atualização, as funções vetoriais do SIMD Avançado e SVE na tabela de símbolos são marcadas com .variant_pcs e, como resultado, o linker dinâmico ligará tais funções mais cedo.

(BZ#1726641)

O roteiro do sudo wrapper agora analisa as opções

Anteriormente, o script /opt/redhat/devtoolset*/root/usr/bin/sudo wrapper não analisava corretamente as opções do sudo. Como conseqüência, algumas opções de sudo (por exemplo, sudo -i) não podiam ser executadas. Com esta atualização, mais opções sudo são corretamente analisadas e, como resultado, o script sudo wrapper funciona mais como /usr/bin/sudo.

(BZ#1774118)

O alinhamento das variáveis TLS na glibc foi fixado

Anteriormente, os dados do armazenamento local de fios alinhados (TLS) podiam, sob certas condições, se tornar instanciados sem o alinhamento esperado. Com esta atualização, o POSIX Thread Library libpthread foi melhorado para assegurar o alinhamento correto sob quaisquer condições. Como resultado, os dados TLS alinhados são agora instanciados corretamente para todas as roscas com o alinhamento correto.

(BZ#1764214)

As chamadas pututxline repetidas após erro EINTR ou EAGAIN não corrompem mais o arquivo utmp

Quando a função pututxline tenta adquirir uma trava e não consegue a tempo, a função retorna com código de erro EINTR ou EAGAIN. Anteriormente nesta situação, se a pututxline fosse chamada novamente imediatamente e conseguisse obter a trava, ela não usava um slot correspondente já alocado no arquivo utmp, mas acrescentava outra entrada em seu lugar. Como conseqüência, estas entradas não utilizadas aumentaram substancialmente o tamanho do arquivo de utmp. Esta atualização corrige o problema, e as entradas são agora adicionadas corretamente ao arquivo utmp.

(BZ#1749439)

mtrace não fica mais pendurado quando ocorrem falhas internas

Anteriormente, um defeito na implementação da ferramenta mtrace podia fazer com que o traçado da memória ficasse pendurado. Para resolver este problema, a implementação da ferramenta mtrace memory tracing foi tornada mais robusta para evitar o pendurar mesmo em face de falhas internas. Como resultado, os usuários podem agora chamar o mtrace e ele não fica mais pendurado, completando em tempo delimitado.

(BZ#1764235)

A função garfo evita certos bloqueios relacionados ao uso de pthread_atfork

Anteriormente, se um programa registrava um manipulador de trabalho e invocava o garfo de um manipulador de sinais assíncronos, um defeito na fechadura interna dependente da implementação poderia causar o congelamento do programa. Com esta atualização, a implementação do garfo e de seus manipuladores de atfork é ajustada para evitar o bloqueio em programas de rosca única.

(BZ#1746928)

strstr não retorna mais correspondências incorretas para um padrão truncado

Em certas plataformas IBM Z (z15, anteriormente conhecidas como arch13), a função strstr não atualizou corretamente um registro de CPU ao lidar com padrões de busca que cruzam os limites de uma página. Como conseqüência, strstr retornou correspondências incorretas. Esta atualização corrige o problema e, como resultado, strstr funciona como esperado no cenário mencionado.

(BZ#1777241)

C.UTF-8 locale fonte ellipsis expressões em glibc são fixas

Anteriormente, um defeito no local de origem C.UTF-8 resultava em todos os pontos de código Unicode acima de U 10000 sem pesos de colação. Como conseqüência, todos os pontos de código acima de U.10000 não foram agrupados como esperado. O locale fonte C.UTF-8 foi corrigido, e o locale binário recentemente compilado agora tem pesos de agrupamento para todos os pontos de código Unicode. O locale C.UTF-8 compilado é 5,3MiB maior, como resultado desta correção.

(BZ#1361965)

glibc não falha mais quando a getpwent() é chamada sem chamar setpwent()

Se seu arquivo /etc/nsswitch.conf apontar para o fornecedor da senha Berkeley DB(db), você poderia solicitar dados usando a função getpwent() sem primeiro chamar setpwent( ) apenas uma vez. Quando você chamou a função endpwent( ), outras chamadas para getpwent() sem a primeira chamada setpwent( ) causaram a falha da glibc porque endpwent() não pôde redefinir os internos para permitir uma nova consulta. Esta atualização corrige o problema. Como resultado, após terminar uma consulta com endpwent(), novas chamadas para getpwent() iniciarão uma nova consulta mesmo que você não chame setpwent().

(BZ#1747502)

ltrace pode agora rastrear chamadas de sistema em binários endurecidos

Anteriormente, a ltrace não produzia nenhum resultado em certos binários endurecidos, tais como binários de sistema, nas arquiteturas AMD e Intel 64-bit. Com esta atualização, ltrace pode agora rastrear chamadas de sistema em binários endurecidos.

(BZ#1655368)

A falha da Intel no JCC não causa mais perda significativa de desempenho no compilador GCC

Certas CPUs da Intel são afetadas pelo bug do Jump Conditional Code (JCC), fazendo com que as instruções da máquina sejam executadas incorretamente. Conseqüentemente, as CPUs afetadas podem não executar os programas corretamente. A correção completa envolve a atualização do microcódigo das CPUs vulneráveis, o que pode causar uma degradação do desempenho. Esta atualização permite uma solução no assembler que ajuda a reduzir a perda de desempenho. A alternativa é not ativado por padrão.

Para aplicar o workaround, recompile um programa usando GCC com a opção -Wa,-mbranches-within-32B-b-boundaries command line. Um programa recompilado com esta opção de linha de comando não será afetado pela falha do JCC, mas a atualização do microcódigo ainda é necessária para proteger totalmente um sistema.

Note que a aplicação do workaround aumentará o tamanho do programa e ainda pode causar uma ligeira diminuição do desempenho, embora deva ser menor do que teria sido sem a recompilação.

(BZ#1777002)

não retarda mais quando utiliza construçõesparalelas

Anteriormente, enquanto funcionavam em construções paralelas, os subprocessos podiam tornar-se temporariamente insensíveis quando esperavam sua vez de funcionar. Como conseqüência, as construções com altos valores -j abrandaram ou funcionaram com valores -j mais baixos efetivos. Com esta atualização, a lógica de controle de trabalho da marca é agora sem bloqueio. Como resultado, as construções com valores altos de -j rodam na velocidade -j total.

(BZ#1774790)

A ferramenta ltrace agora informa corretamente as chamadas de função

Devido a melhorias no endurecimento binário aplicadas a todos os componentes RHEL, a ferramenta ltrace anteriormente não conseguia detectar chamadas de função em arquivos binários provenientes de componentes RHEL. Como conseqüência, a saída do ltrace estava vazia porque não relatou nenhuma chamada detectada quando usada em tais arquivos binários. Esta atualização corrige a forma como o ltrace ltrace lida com as chamadas de função, o que evita a ocorrência do problema descrito.

(BZ#1618748)