Curiously, it seems that file descriptor number 5 is involved each time. I wonder what it's about?

It looks like the program is using that file descriptor to either read something, or to communicate with something. But looks like it isn't getting the results it's expecting.

If you still have the whole strace output available, please try to find the line where the file descriptor 5 is initialized. It might be an open() system call, or it might be socket(), pipe(), or perhaps something else entirely.

If it's open() or socket(), it would look like this in the strace output:

open() = 5

socket() = 5

If it's a pipe, it might look like this:

pipe([x,y]) = 0where x and y are file descriptor numbers; one of those would be 5.

If file descriptor 5 is initialized with open(), the filename should be mentioned in the open() system call. But if socket() or pipe() is used, it would be necessary to see what happens _after_ those system calls: is a socket used to connect to something or listen for incoming connections? What process is in the other end of the pipe?