Que informações posso obter sobre um eventpoll em um thread em execução?

5

Seguindo um problema descrito em " Como é que eu posso anexar strace a um processo que não está na saída do ps? "

Estou tentando depurar um processo que está no meio do caminho.

Usando strace -f no meu processo pai, consegui determinar que tenho vários segmentos que estão sendo exibidos:

# strace -p 26334
Process 26334 attached - interrupt to quit
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, ^C <unfinished ...>
Process 26334 detached

Investigando mais:

# readlink /proc/26334/fd/607
anon_inode:[eventpoll]

Meu instinto me diz que consegui colocar alguns tópicos em uma situação de deadlock, mas eu realmente não sei o suficiente sobre epoll para seguir em frente. Existe algum comando que possa me dar algumas dicas sobre o que esses threads estão pesquisando, ou quais descritores de arquivos esse descritor de epoll mapeia para.

    
por Dancrumb 23.04.2014 / 22:40

1 resposta

4

Quando você executa strace , as linhas que estão retornando são funções do sistema. Caso não seja óbvio, epoll_wait() é uma função que você pode fazer um man epoll_wait para descobrir detalhes de implementação como:

   epoll_wait, epoll_pwait - wait for an I/O event on an epoll file descriptor

A descrição de epoll :

The epoll API performs a similar task to poll(2): monitoring multiple file descriptors to see if I/O is possible on any of them. The epoll API can be used either as an edge-triggered or a level-triggered interface and scales well to large numbers of watched file descriptors.

Assim, parece que o processo está bloqueando os descritores de arquivos, esperando para ver se a E / S é possível em qualquer um deles.

Eu mudaria um pouco as minhas táticas e tentaria usar lsof -p <pid> para ver se você pode restringir o que esses arquivos realmente são.

    
por 23.04.2014 / 23:42