Estou tentando depurar o módulo synproxy do netfilter com o systemtap.
Este é o ponto de sondagem que estou tentando adicionar.
# stap -l 'module("ipt_SYNPROXY").statement("*")' | grep send_client_synack
module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72")
E é assim que o script stap se parece
probe module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72"){
//some code
}
Estou ficando abaixo do erro quando tento executá-lo
semantic error: no line records for net/ipv4/netfilter/ipt_SYNPROXY.c:72 [man error::dwarf]
semantic error: resolution failed in DWARF builder
semantic error: while resolving probe point: identifier 'module' at netfilter.stp:915:7
source: probe module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72"){
^
semantic error: no match
Eu tentei alguns outros pontos de sonda e percebi que nem todos os pontos de sonda dão esse erro. Por exemplo, a sonda abaixo funciona bem
probe module("ipt_SYNPROXY").statement("ipv4_synproxy_hook@net/ipv4/netfilter/ipt_SYNPROXY.c:314"){
//some code
}
Meu kernel versão 4.14.128 que eu mesmo compilei. Eu suspeito que perdi alguma coisa ao compilá-lo.
Percebi que é um problema em relação ao gcc durante a compilação do kernel. Apliquei abaixo do patch e resolveu.
https://lkml.org/lkml/2015/4/23/605