FERRAMENTAS LINUX: O problema de bug / Golang do Linux 5.2+ "Register Corruption" era um problema de armazenamento em cache de uma linha do kernel

sexta-feira, 29 de novembro de 2019

O problema de bug / Golang do Linux 5.2+ "Register Corruption" era um problema de armazenamento em cache de uma linha do kernel



Confira !!



Juntando-se há pouco mais de um dia, o pessoal do Google que trabalhava na Golang descobriu que muitos problemas do Go surgiam de um bug no kernel Linux 5.2 e mais recente, que foi elaborado para ser algum tipo de problema de corrupção de registro. Agora, esse problema está resolvido e, felizmente, é uma correção de kernel de uma linha e resume-se a ser um problema de cache.

O desenvolvedor do kernel Sebastian Andrzej Siewior descobriu o bug - desde que confirmado para abordar o caso de teste C e os problemas de Golang - desde o acesso em cache ao contexto fpu_fpregs_owner_ctx. O contexto estava sendo armazenado em cache, mas como o kernel adiou o carregamento dos registros da FPU ao retornar à terra do usuário, o fpu_fpregs_owner_ctx pode mudar durante a preempção e não deve ser armazenado em cache, de acordo com o patch desenvolvido para corrigir o problema.

Simplesmente passando fpu_fpregs_owner_ctx para this_cpu_read () em vez de this_cpu_read_stable () , onde, como este último permite que o valor seja armazenado em cache, em vez de fazer com que o GCC carregue a variável por CPU sempre que for acessado, corrige o problema do Kernel Linux 5.2+ criado pelos principais líderes do GCC9 aos problemas que atingem Golang e outros bugs.

Esta alteração de uma linha é confirmada para resolver o problema, portanto, esperamos que seja lançada na série estável do kernel em breve.


Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário