I wrote a code in C using libsane. It worked perfectly in Ubuntu 20.04.
Now it crashes in sane_open. I ran my code under strace and I see the
crash happen. I run it with "escl:http://192.168.4.20:80"
Here is the output from strace:
openat(AT_FDCWD, "./escl.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/sane.d/escl.conf", O_RDONLY) = 4
newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=1447, ...}, AT_EMPTY_PATH) = 0
read(4, "# escl.conf -- ESCL configuratio"..., 4096) = 1447
read(4, "", 4096) = 0
close(4) = 0
socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4
close(4) = 0
socketpair(AF_UNIX, SOCK_STREAM, 0, [4, 5]) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
poll([{fd=4, events=POLLIN}], 1, 0) = 0 (Timeout)
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 6
setsockopt(6, SOL_TCP, TCP_NODELAY, [1], 4) = 0
fcntl(6, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(6, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("192.168.4.20")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=6, events=POLLPRI|POLLOUT|POLLWRNORM}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLOUT}, {fd=4, events=POLLIN}], 2, 199) = 1 ([{fd=6, revents=POLLOUT}])
poll([{fd=6, events=POLLPRI|POLLOUT|POLLWRNORM}], 1, 0) = 1 ([{fd=6, revents=POLLOUT|POLLWRNORM}])
getsockopt(6, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(6, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("192.168.4.20")}, [128 => 16]) = 0
getsockname(6, {sa_family=AF_INET, sin_port=htons(46066), sin_addr=inet_addr("192.168.4.40")}, [128 => 16]) = 0
sendto(6, "GET /eSCL/ScannerCapabilities HT"..., 75, MSG_NOSIGNAL, NULL, 0) = 75
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN}, {fd=4, events=POLLIN}], 2, 99) = 1 ([{fd=6, revents=POLLIN}])
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=6, revents=POLLIN|POLLRDNORM}])
recvfrom(6, "HTTP/1.1 200 OK\r\nCache-Control: "..., 16384, 0, NULL, NULL) = 5962
poll([{fd=6, events=POLLIN}, {fd=4, events=POLLIN}], 2, 55) = 1 ([{fd=6, revents=POLLIN}])
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=6, revents=POLLIN|POLLRDNORM}])
recvfrom(6, "BinaryRenderings>\r\n</scan:Settin"..., 1527, 0, NULL, NULL) = 1527
close(6) = 0
futex(0x7f8b65a74cb8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
--- SIGFPE {si_signo=SIGFPE, si_code=FPE_FLTINV, si_addr=0x7f8b658ec4db} ---
rt_sigaction(SIGFPE, {sa_handler=0x55fa9c0d7852, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f8b6623bcf0}, {sa_handler=0x55fa9c0d7852, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f8b6623bcf0}, 8) = 0
write(2, "\r\n", 2
) = 2
write(2, "-----------------------------\r\n", 31-----------------------------
) = 31
write(2, "ERROR: Floating point exception "..., 41ERROR: Floating point exception received
) = 41
xscanimage runs fine with this same device specification.
What is the next step either in debugging or reporting?