Video Thumbnail Generation Crashing XnView

*** Please report new bugs here! ***

Moderators: helmut, xnview, Dreamer

Post Reply
Akira98
Posts: 3
Joined: Sun Apr 06, 2025 4:56 pm

Video Thumbnail Generation Crashing XnView

Post by Akira98 »

XnView: 1.8.7 64-bit (Linux) - Libformat 7.220
OS: Linux 64 bit

Effect: Hanging of thread related to thumbnail generation (for videos).

To reproduce: Difficult to do individually, occurs randomly on different video files. Which video file does not appear to make a difference, it will crash in the same directory on a different video each time, while videos that previously caused the crash may generate thumbnails just fine.

Actual behaviour (bug): <Current wrong behaviour of XnView> :bug: Part of the program hangs when a video thumbnail fails to generate.

When this crash occurs, the last lines in output will look like this for the video that crashed it:

Code: Select all

BLOB length 75 
==> daawiolewzlo1.mp4 0 
  MDK ==> 51767  0
decoded @0.000000. out size: 1280x720, stride: 5120, format: 10
  MDK2 ==> 51767  0
==> isdolfasop2.mp4 25 
  MDK ==> 51767  12941
decoded @12.500000. out size: 1280x720, stride: 5120, format: 10
  MDK2 ==> 51767  0
Once this occurs, the entire program does not crash immediately, only thumbnail generation stops at the video file.
Most UI elements still function, but certain subsequent actions after the thumbnail fails to generate will cause the entire program to crash (stopped responding):
- Using Ctrl+1, Ctrl+2, etc... To Add a rating. Adding a rating from the context menu does not cause XnView to crash
- Navigating to any other folder
- Refreshing current folder
- Renaming, moving, deleting a file or folder

After any of these actions, right before the crash this will be outputted to the console:

Code: Select all

ThumbLoaderThread :: stop()
Usually a few hundred thumbnails will be generated before one crashes. No videos in particular seem to cause this, it is only random. Mostly seen it occur on .mp4 format but I believe it also occurred on a .webm video.

If I try to generate thumbnails for the folder in Settings -> Catalog, eventually a random video will cause it to hang indefinitely and crash the program, likely same error. With thousands of videos it's not feasible to upload this folder.

Expected behaviour: All thumbnails generate correctly or if not, ensure stability of program. (Create a generic "error" thumbnail and continue generating thumbnails?)
User avatar
xnview
Author of XnView
Posts: 47002
Joined: Mon Oct 13, 2003 7:31 am
Location: France
Contact:

Re: Video Thumbnail Generation Crashing XnView

Post by xnview »

you had not this problem with previous version?
Pierre.
Akira98
Posts: 3
Joined: Sun Apr 06, 2025 4:56 pm

Re: Video Thumbnail Generation Crashing XnView

Post by Akira98 »

I don't believe so because previously I had thumbnails for all of these videos generated. Only after I upgraded to 1.8.7 did I end up needing to rebuild all of my thumbnails, but I don't remember what version I had before that.

The video files themselves don't appear to be the issue, because it's random which one it crashes on.
Is there any other type of logging I can provide?


I tried a fresh install, deleting all user files and it still occurs (after I enable thumbnail generation for videos).
User avatar
xnview
Author of XnView
Posts: 47002
Joined: Mon Oct 13, 2003 7:31 am
Location: France
Contact:

Re: Video Thumbnail Generation Crashing XnView

Post by xnview »

you can change debug=2, and start XnView from a terminal
Pierre.
Akira98
Posts: 3
Joined: Sun Apr 06, 2025 4:56 pm

Re: Video Thumbnail Generation Crashing XnView

Post by Akira98 »

Debug=2 did not add any extra info.

After testing on windows, this crash seems to only occur on Linux Debian 64 bit. All thumbnails generated fine on windows 11 64 bit (same xnview version).

Code: Select all

==> TEST/9DP1Ttz3Z3O6.mp4 0 
  MDK ==> 1000  0
decoded @0.000000. out size: 1280x1024, stride: 5120, format: 10
  MDK2 ==> 1000  0
LOADED & CREATED
BLOB length 75 
==> TEST/9pWT0yfYFVSZ.mp4 0 
  MDK ==> 14000  0
decoded @0.000000. out size: 1280x1024, stride: 5120, format: 10
  MDK2 ==> 14000  0
LOADED & CREATED
BLOB length 75 
==> TEST/9TbjIRMWUPDO.mp4 0 
  MDK ==> 15000  0
decoded @0.000000. out size: 1280x1024, stride: 5120, format: 10
  MDK2 ==> 15000  0
LOADED & CREATED
BLOB length 75 
==> TEST/62PJ4YQwcLVS.mp4 0 
  MDK ==> 20000  0
decoded @0.000000. out size: 640x480, stride: 2560, format: 10
  MDK2 ==> 20000  0
On that last file in this output log "62PJ4YQwcLVS.mp4", it never gets to the "LOADED & CREATED" part. This is where it crashes.

Once I do certain operations, such as navigating to another folder,

Code: Select all

ThumbLoaderThread :: stop()
will be the last line and then it crashes the whole program.


Here in this screenshot, in another instance, the video that crashes it is "AG1yyU1...". It's a random video each time, after about 15 or so thumbnail generations.
1.png
1.png (116.43 KiB) Viewed 904 times

Since I can't upload an entire video folder, I used ChatGPT to make this code to generate random videos, which are used in this test case (100% reproducible on Linux with video thumbnails turned on)

Code: Select all

import cv2 # pip install opencv-python
import numpy as np
import random
import os

random_name = lambda x: "".join((random.choice("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890") for i in range(x)))

RANDOM_RESOLUTIONS = (
	(640, 480),
	(1280, 1024),
	(1920, 1080)
)

def Generate_MP4(width, height, length_in_seconds, output_path):
	fps = 30
	num_frames = int(length_in_seconds*fps)
	random_color = (random.randrange(0, 255), random.randrange(0, 255), random.randrange(0, 255))

	# Use H.264 encoding. 'avc1' is a common FourCC for H.264
	fourcc = cv2.VideoWriter_fourcc(*'avc1')

	writer = cv2.VideoWriter(output_path, fourcc, fps, (width, height))

	if not writer.isOpened():
		raise RuntimeError("Failed to open video writer. Your system might not support 'avc1' (H.264).")

	for i in range(num_frames):
		if random.random() >= 0.95:
			frame = np.random.randint(0, 256, (height, width, 3), dtype=np.uint8)
		else:
			frame = np.full((height, width, 3), random_color, dtype=np.uint8)
		
		writer.write(frame)

	writer.release()
	print(f"Video saved to {output_path}")

for index in range(150):
	name = random_name(12) + ".mp4"
	res = random.choice(RANDOM_RESOLUTIONS)
	length = random.choice(range(1, 25))
	
	print("%s: %dx%d %d sec" % (name, res[0], res[1], length))
	
	try:
		Generate_MP4(res[0], res[1], length, name)
	except:
		os.unlink(name)

This bug seems to have also caused my entire thumbnail DB to become corrupt at least once.


Hope this helps, thanks for your time
User avatar
xnview
Author of XnView
Posts: 47002
Joined: Mon Oct 13, 2003 7:31 am
Location: France
Contact:

Re: Video Thumbnail Generation Crashing XnView

Post by xnview »

i've tried on Kubuntu 24, with 50 mp4 and no crash here
Pierre.
iCu-ned
Posts: 1
Joined: Sun Oct 26, 2025 11:53 am

Re: Video Thumbnail Generation Crashing XnView

Post by iCu-ned »

I have the exact same issue. Running Pop!_OS. XnView MP's thumbnail generation crashes < 15% like the previous user stated.
Only option so far seems to disable video thumbnail generation.
User avatar
xnview
Author of XnView
Posts: 47002
Joined: Mon Oct 13, 2003 7:31 am
Location: France
Contact:

Re: Video Thumbnail Generation Crashing XnView

Post by xnview »

please try with

Code: Select all

QT_XCB_GL_INTEGRATION=xcb_egl
Pierre.
ccombsdc
Posts: 3
Joined: Tue Nov 25, 2025 3:44 pm

Re: Video Thumbnail Generation Crashing XnView

Post by ccombsdc »

xnview wrote: Mon Oct 27, 2025 6:58 am please try with

Code: Select all

QT_XCB_GL_INTEGRATION=xcb_egl
Using debug=2 and the above environment variable on XnViewMP 1.9.5, I don't get much output on Ubuntu 22.04 and 24.04 LTS (two machines). It seems like the video thumbnailer thread deadlocks.

Here are the last few lines.

Code: Select all

CURRENT CHANGED  15 

###  checkChanged : 15
######### CategoryModel :: checkAndSave()
### ThumbLoaderThread :: setFirstItemToLoad
 ** start condition wake one 3
### ThumbLoaderThread :: setFirstItemToLoad ok
LOAD BITMAP </home/combs/remote/Studio-Sync/Slow-Motion/ocean.sh>
GFF :: LoadThumbnail : 0 0  (2) 
ThumbLoaderThread - ADD into DB (3482)
BLOB length 75 

 ...
 
==> /home/combs/remote/Studio-Sync/Slow-Motion/2025-08-01-02-GX010093.MP4 1 
ThumbLoaderThread - ADD into DB (30392)
BLOB length 75 
==> /home/combs/remote/Studio-Sync/Slow-Motion/2025-09-17-01-GX010119.MP4 1 
updateDateTree 101ms 
Output just stops here.

The interface remains sort of responsive--e.g. I can highlight different files--but as soon as I try to navigate or do something that causes the BitmapLoadThread to stop(), the interface hangs.

In htop I can see wrapper shell script, main process, 9 child threads. All using 0% CPU.

I've tried emptying my cache, deleting the database, etc.

I think this problem started for me around 1.5 years ago, perhaps with 1.8.0.
Last edited by ccombsdc on Tue Nov 25, 2025 6:26 pm, edited 2 times in total.
ccombsdc
Posts: 3
Joined: Tue Nov 25, 2025 3:44 pm

Re: Video Thumbnail Generation Crashing XnView

Post by ccombsdc »

Using the following commandline, I was able to launch XnViewMP with strace and view all of the syscalls performed by the process. (the /usr/bin/xnview shell script usually prevents this.)

Code: Select all

LD_LIBRARY_PATH=/opt/XnView/lib:/opt/XnView/Plugins QT_PLUGIN_PATH=/opt/XnView/lib QT_XCB_GL_INTEGRATION=xcb_egl strace /opt/XnView/XnView
So, here's the last few lines of output in that environment. It is polling a lock and timing out repeatedly.

Code: Select all

poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 319) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 500) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 500) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)

Here is a fuller log showing the beginning of thumb generation, I think. I have trimmed out a lot of the individual lseek/read syscalls for reading the file.

Code: Select all


==> /home/combs/remote/Studio-Sync/Slow-Motion/water/GX016251-30fps-SAMPLE-threshold-0x404040.mp4 1 
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 0) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\2\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="+\0\1\0", iov_len=4}], 1) = 4
futex(0x7ffe2c0a2f18, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x1f348548, FUTEX_WAKE_PRIVATE, 1) = 0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base=";\3\5\0*\0`\3\0\0\0\0X\2\313\0\353\n\340\5\202\3\n\0\7\0`\3*\0`\3"..., iov_len=76}], 1) = 76
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 40  MDK ==> 5033  50
) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 500decoded @0.000000. out size: 2704x1520, stride: 10880, format: 10
  MDK2 ==> 5033  0
LOADED & CREATED
BLOB length 75 
) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\3\0\0\0\0\0\0\0", 16)         = 8
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
==> /home/combs/remote/Studio-Sync/Slow-Motion/water/20190109-ASMR0037-resized-128x64-threshold-0x808080-SAMPLE.mp4 1 
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=3552, ...}, 0) = 0
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 0) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\2\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="+\0\1\0", iov_len=4}], 1) = 4
futex(0x1f348548, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f348548, FUTEX_WAKE_PRIVATE, 1) = 0
  MDK ==> 30067  300
decoded @0.000000. out size: 128x64, stride: 512, format: 10
  MDK2 ==> 30067  0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base=";\3\5\0*\0`\3\0\0\0\0X\2\313\0\353\n\340\5\202\3\n\0\7\0`\3*\0`\3"..., iov_len=76}], 1) = 76
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 288) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 142) = 0 (Timeout)
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 0) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
lseek(15, 239095808, SEEK_SET)          = 239095808
read(15, "\r\f\350\0003\0\313\5\7\330\n\30\n\250\rx\2\310\2\200\28\10\370\v\200\fX\5\340\7\220"..., 4096) = 4096
lseek(15, 239144960, SEEK_SET)          = 239144960
read(15, "\r\fX\0000\0\203\5\16\340\16\230\16P\5\340\t@\17p\17(\2\310\2\200\28\1\360\1\250"..., 4096) = 4096
lseek(15, 243499008, SEEK_SET)          = 243499008
read(15, "\r\0\0\0\34\10 \0\17\270\17p\17(\16\340\16\230\16P\16\10\r\300\rx\r0\f\350\f\240"..., 4096) = 4096
lseek(15, 240259072, SEEK_SET)          = 240259072


.. TRIMMED...

lseek(15, 276541440, SEEK_SET)          = 276541440
read(15, "\r\0\0\0\33\0j\0\17@\16\207\r\306\r}\r4\f\353\f\242\fU\v\225\n\334\n\33\tZ"..., 4096) = 4096
lseek(15, 276783104, SEEK_SET)          = 276783104
read(15, "\r\0\0\0\27\0\351\0\17[\16\233\r\333\r\33\fZ\f\21\vW\n\227\nN\n\5\tK\10\221"..., 4096) = 4096
lseek(15, 276992000, SEEK_SET)          = 276992000
read(15, "\r\0\0\0\34\0\240\0\17?\16~\r\364\rl\f\344\f\\\v\323\vJ\n\301\n9\t\261\t'"..., 4096) = 4096
lseek(15, 277127168, SEEK_SET)          = 277127168
read(15, "\r\0\0\0\36\0l\0\17w\16\355\16d\r\334\rS\f\312\fA\v\270\v0\n\247\n\37\t\227"..., 4096) = 4096
lseek(15, 277209088, SEEK_SET)          = 277209088
read(15, "\r\0\0\0006\0\232\0\17\267\17n\17%\16\334\16\223\16J\16\1\r\270\ro\r&\f\335\f\224"..., 4096) = 4096
write(1, "updateDateTree 168ms \n", 22updateDateTree 168ms 
) = 22
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 185) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 1 ([{fd=6, revents=POLLIN}])
recvmsg(6, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="U\2\257\0\7\216x\t\3\24\4\0\20\0\0\0\0\0\0\24\24\24\24\24\0\0\3\37%\2\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 375) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 375) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 499) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498) = 0 (Timeout)
recvmsg(6, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=10, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}], 5, 498^Z

ccombsdc
Posts: 3
Joined: Tue Nov 25, 2025 3:44 pm

Re: Video Thumbnail Generation Crashing XnView

Post by ccombsdc »

1.7.2 succeeds at thumbnailing a folder of 5,500 videos, which 1.9.5 and many of the 1.8.x versions fail to do between 1-10%.
Post Reply