Bonjour,
poll([{fd=11, events=POLLIN}], 1, 25000
Là il attend un évènement sur le file descripteur 11, il faudrait
repérer au dessus un appel open (ou nom approchant) que retourne 11
pour voir à quelle ressource ça correspond
J'ai redirigé la sortie de strace vers un fichier "trace".
Ensuite:
~/temp> egrep 'poll.*fd=11|^open.*= 11' trace | cat -n
1 poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])
2 poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])
3 poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])
4 poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])
5 poll([{fd=11, events=POLLIN}], 1, 25000) = ? ERESTART_RESTARTBLOCK
(Interrupted by signal)
6 openat(AT_FDCWD,
"/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache", O_RDONLY) = 11
7 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/gio/modules",
O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11
8 openat(AT_FDCWD,
"/usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so", O_RDONLY|O_CLOEXEC) = 11
9 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so",
O_RDONLY|O_CLOEXEC) = 11
[...]
C'est le "poll" de la ligne 5 qui bloque.
Je ne vois donc pas d'openat renvoyant 11 dans les lignes qui le précèdent.
ls -l /proc/$(pidof pavucontrol)/fd
Cela donne, pendant le chargement de pavucontrol :
~> ls -l /proc/$(pidof pavucontrol)/fd
total 0
lrwx------ 1 seb seb 64 Nov 9 16:07 0 -> /dev/pts/11
lrwx------ 1 seb seb 64 Nov 9 16:07 1 -> /dev/pts/11
lrwx------ 1 seb seb 64 Nov 9 16:07 10 -> 'anon_inode:[eventfd]'
lrwx------ 1 seb seb 64 Nov 9 16:07 11 -> 'anon_inode:[eventfd]'
lrwx------ 1 seb seb 64 Nov 9 16:07 2 -> /dev/pts/11
lrwx------ 1 seb seb 64 Nov 9 16:06 3 -> 'socket:[443606]'
lrwx------ 1 seb seb 64 Nov 9 16:07 4 -> 'anon_inode:[eventfd]'
lrwx------ 1 seb seb 64 Nov 9 16:07 5 -> 'socket:[444861]'
lrwx------ 1 seb seb 64 Nov 9 16:07 6 -> 'socket:[440203]'
lrwx------ 1 seb seb 64 Nov 9 16:07 7 -> 'anon_inode:[eventfd]'
lrwx------ 1 seb seb 64 Nov 9 16:07 8 -> 'anon_inode:[eventfd]'
lrwx------ 1 seb seb 64 Nov 9 16:07 9 -> 'socket:[444862]'
man proc a quelques infos sur "anon_inode:[eventfd]", mais ça ne m'avance
pas beaucoup :
For file descriptors that have no corresponding inode (e.g.,
file descriptors produced by bpf(2), epoll_create(2),
eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2),
timerfd_create(2), and userfaultfd(2)), the entry will be a sym-
bolic link with contents of the form
anon_inode:file-type
In many cases (but not all), the file-type is surrounded by
square brackets.
For example, an epoll file descriptor will have a symbolic link
whose content is the string anon_inode:[eventpoll].
man 2 eventfd parle d'un mécanisme d'attente :
eventfd() creates an "eventfd object" that can be used as an event
wait/notify mechanism by user-space applications, and by the kernel to
notify user-space applications of events.
Cela ne m'avance guère.
Quelqu'un sait-il donner du sens à tout cela ?
Ou pense à une piste complètement différente pour donner sens à ces
25 secondes d'attente ?
Merci !
Seb.