v4l2 heisenbug, krkrkr

This commit is contained in:
tonton th 2020-12-26 19:04:22 +01:00
parent 14ded65303
commit 71205d4ab0
2 changed files with 16 additions and 4 deletions

View File

@ -254,6 +254,9 @@ if (verbosity) fprintf(stderr,"pid %d is going to grab %d picz...\n",
getpid(), nbre_capt); getpid(), nbre_capt);
#endif #endif
/*
* START ON THE GRABBING LOOP
*/
for (i = 0; i < nbre_capt; i++) { for (i = 0; i < nbre_capt; i++) {
do { do {
FD_ZERO(&fds); FD_ZERO(&fds);
@ -268,7 +271,8 @@ for (i = 0; i < nbre_capt; i++) {
if (r == -1) { if (r == -1) {
perror("select"); perror("select");
return errno; return errno; /* WTF ? a rogue return
from the main() ? */
} }
if(verbosity > 1) { if(verbosity > 1) {

View File

@ -1,17 +1,25 @@
Heisenbug dans la capture d'image. Heisenbug dans la capture d'image
=================================
Contexte : Debian 10 32 bits sur Sony Vaio,
webcam Logitech classique.
Mon soft 'grabvidseq' part _parfois_ en torche oo, à la louche une
fois sur cent. Mais toujours au même endroit, au début de la boucle
de capture des images, précisément dans cet appel système :
CLEAR(buf); CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP; buf.memory = V4L2_MEMORY_MMAP;
xioctl(fd, VIDIOC_DQBUF, &buf); xioctl(fd, VIDIOC_DQBUF, &buf);
Quand le programme semble figé, un strace -p <pi> sort le même
message en rafale _très_ féroce :
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable) ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable)
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable) ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable)
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE^Cstrace: Process 11181 detached ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE^Cstrace: Process 11181 detached
WTF ?