11.9. Compiladores e ferramentas de desenvolvimento
Funções sintéticas geradas pelo GCC confundem SystemTap
A otimização do GCC pode gerar funções sintéticas para cópias parcialmente simplificadas de outras funções. Ferramentas como SystemTap e GDB não podem distinguir estas funções sintéticas das funções reais. Como conseqüência, o SystemTap coloca sondas em pontos de entrada de funções sintéticas e reais e, assim, registra múltiplos acertos de sondas para uma única chamada de função real.
Para contornar este problema, modifique os scripts SystemTap para detectar a recorrência e evitar a colocação de sondas relacionadas a funções parciais simplificadas.
Este roteiro de exemplo
sonda kernel.function({\i1}"can_nice}").call {\i}
sonda kernel.function({\i1}"can_nice}").call {\i}
pode ser modificado desta forma:
Observe que este roteiro de exemplo não considera todos os cenários possíveis, tais como a falta de kprobes ou kretprobes, ou a verdadeira recursividade pretendida.
(BZ#1169184)