[sane-devel] All sane frontends segfault with my HP 5200C

Ben Finney bignose@zip.com.au
Sat, 2 Feb 2002 15:31:38 +1100


Howdy all,

I'm attempting to use my HP 5200C on a USB port with sane 1.0.6, and not
having much joy.  I've checked everywhere that the docs suggest could be
a problem; I've even got the latest USB scanner driver (0.4.6) from David
Nelson's site

=====
$ cat /proc/bus/usb/devices       
[...]
T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=03f0 ProdID=0401 Rev= 1.00
S:  Product=HP ScanJet 5200C
S:  SerialNumber=SG93K162P0HT
C:* #Ifs= 1 Cfg#= 1 Atr=60 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  16 Ivl=  0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=250ms
[...]

$ cat /proc/bus/usb/drivers |grep scanner
 48- 63: usbscanner

$ uname -a
Linux rose 2.4.16 #1 Sat Feb 2 14:21:17 EST 2002 i686 unknown

$ sudo /sbin/insmod scanner vendor=0x3f0 product=0x0401
Using /lib/modules/2.4.16/kernel/drivers/usb/scanner.o

$ dmesg |grep scanner
usb.c: registered new driver usbscanner
scanner.c: probe_scanner: User specified USB scanner -- Vendor:Product - 3f0:401scanner.c: 0.4.6:USB Scanner Driver

$ cat /etc/sane.d/dll.conf |grep hp
hp

$ cat /etc/sane.d/hp.conf
/dev/usb/scanner0
    option connect-device

$ ls -l /dev/usb/scanner0
crw-rw----    1 root     scanner  180,  48 Jan 29 12:22 /dev/usb/scanner0

$ scanimage --version
scanimage (sane-backends) 1.0.6; backend version 1.0.6

$ sane-find-scanner -v
# Note that sane-find-scanner will find any scanner that is connected
# to a SCSI bus and some scanners that are connected to the Universal
# Serial Bus (USB) depending on your OS. It will even find scanners
# that are not supported at all by SANE. It won't find a scanner that
# is connected to a parallel or proprietary port.

# You may want to run this program as super-user to find all devices.
# Once you found the scanner devices, be sure to adjust access
# permissions as necessary.

sane-find-scanner: searching for SCSI scanners:
sane-find-scanner: checking /dev/scanner... open ok
Segmentation fault
=====

I get a segmentation fault no matter what sane frontend I try.  Here is
the output of an strace on sane-find-scanner:

=====
execve("/usr/bin/sane-find-scanner", ["sane-find-scanner"], [/* 32 vars */]) = 0
uname({sys="Linux", node="rose", ...})  = 0
brk(0)                                  = 0x804f0c4
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(0x3, 0xbfffeb04)                = 0
old_mmap(NULL, 55126, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
close(3)                                = 0
open("/lib/libnsl.so.1", O_RDONLY)      = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0B\0\000"..., 1024) = 1024
fstat64(0x3, 0xbfffeb4c)                = 0
old_mmap(NULL, 82716, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40024000
mprotect(0x40035000, 13084, PROT_NONE)  = 0
old_mmap(0x40035000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x10000) = 0x40035000
old_mmap(0x40037000, 4892, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40037000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 I\0\000"..., 1024) = 1024
fstat64(0x3, 0xbfffeb3c)                = 0
old_mmap(NULL, 137220, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40039000
mprotect(0x4005a000, 2052, PROT_NONE)   = 0
old_mmap(0x4005a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x20000) = 0x4005a000
close(3)                                = 0
open("/usr/lib/libjpeg.so.62", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0%\0\000"..., 1024) = 1024
fstat64(0x3, 0xbfffeb2c)                = 0
old_mmap(NULL, 123268, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4005b000
mprotect(0x40078000, 4484, PROT_NONE)   = 0
old_mmap(0x40078000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1c000) = 0x40078000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0(\327\1"..., 1024) = 1024
fstat64(0x3, 0xbfffeb1c)                = 0
old_mmap(NULL, 1187968, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4007a000
mprotect(0x40192000, 41088, PROT_NONE)  = 0
old_mmap(0x40192000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x117000) = 0x40192000
old_mmap(0x40198000, 16512, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40198000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4019d000
munmap(0x40016000, 55126)               = 0
fstat64(0x1, 0xbfffafcc)                = 0
old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000
SYS_199(0x401971f0, 0, 0x40197e60, 0x40194f30, 0x804ecac) = 1000
brk(0)                                  = 0x804f0c4
brk(0x804f244)                          = 0x804f244
brk(0x8050000)                          = 0x8050000
open("/proc/scsi/scsi", O_RDONLY)       = 3
fstat64(0x3, 0xbfffb14c)                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
read(3, "Attached devices: \nHost: scsi0 C"..., 1024) = 493
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0x40018000, 4096)                = 0
open("/proc/scsi/scsi", O_RDONLY)       = 3
fstat64(0x3, 0xbfffb14c)                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
read(3, "Attached devices: \nHost: scsi0 C"..., 1024) = 493
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0x40018000, 4096)                = 0
open("/dev/scanner", O_RDWR|O_EXCL)     = 3
ioctl(3, TIOCSCCINI, 0xbfffb6a4)        = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(3, TIOCGKISS, 0x804ede8)          = -1 ENOTTY (Inappropriate ioctl for device)
old_mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4019e000
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
write(3, "*\0\0\0)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 42) = 42
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
select(4, [3], NULL, NULL, NULL)        = 1 (in [3])
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
read(3, "", 41)                         = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++

=====

Any help appreciated.

-- 
 \       "When I was little, my grandfather used to make me stand in a |
  `\   closet for five minutes without moving. He said it was elevator |
_o__)                                     practice."  -- Steven Wright |
bignose@zip.com.au  F'print 9CFE12B0 791A4267 887F520C B7AC2E51 BD41714B