v4l2 heisenbug, krkrkr
This commit is contained in:
		
							parent
							
								
									14ded65303
								
							
						
					
					
						commit
						71205d4ab0
					
				| @ -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) { | ||||||
|  | |||||||
| @ -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 ? | ||||||
| 
 |  | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user