On 11/9/23 15:12, Seb wrote:
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.
Je devine qu'un processus (j'ignore lequel) a appellé eventfd, qui est
très utile mais spécifique à Linux:
https://man7.org/linux/man-pages/man2/eventfd.2.html
Peut-être qu'il serait utile de télécharger le code source de
pavucontrol https://freedesktop.org/software/pulseaudio/pavucontrol/ et
d'y chercher les appels à eventfd.
Sinon, un rapport de bogue sur
https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/issues pourrait
être utile.
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 ?
Pour ma part, je cherche des contributeurs pour le moteur d'inférences
http://refpersys.org/ (avec code en
https://github.com/RefPerSys/RefPerSys/ ....)
Dans quelque temps (j'espère quelques mois) RefPerSys pourrait aider à
chasser ce genre de bogue.
Librement
--
Basile Starynkevitch
<bas...@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/