[sane-devel] SANE 1.0.8, Canoscan 300 on Adaptec AVA-1502p ISA SCSI -> scanimage segfaults

Henning Meier-Geinitz henning@meier-geinitz.de
Sat, 5 Oct 2002 23:01:20 +0200


Hi,

On Sat, Oct 05, 2002 at 10:13:19PM +0200, Till Kamppeter wrote:
> Anyone has any idea how this can happen? The OS is uses is Mandrake 9.0.

A gdb output would be more interesting :-) Generally the approach
would be to make sure that it's really the canon backend by commenting
out all other backends in dll.conf.

> Hi, I have got a problem with sane : it always makes a segmentation fault 
> when I try scanimage command, in 8.2 it works fine but in 9.0 it always 
> makes this segmentation fault.
> My scanner is a canon canoscan 300 plugged on a adaptec ava-1502p isa scsi 
> card.

Between 1.0.7 and 1.0.8 there was an update of the canon backend so
this may have caused the problem. However, I don't remember any other
report of this.

> I send you the log of the command "strace -o toto.log scanimage -T".
> I hope you will help me to sort out this problem.

Ok, lets see:
[...]
| open("./dll.conf", O_RDONLY)            = -1 ENOENT (No such file or directory)

That's the dll backend.

| open("/usr/lib/sane/libsane-canon.so.1", O_RDONLY) = 3

Loading the canon backend.

| open("./canon.conf", O_RDONLY)          = -1 ENOENT (No such file or directory)

Searching for some SCSI devices.

| write(3, "S\0\0\0\375\377\377\377\6@\0\0$\0\0\0\320\321\377\277\240"..., 64) = 64

Probably sending inquiry or something like this.

| close(3)                                = 0

sane_canon finished the device scan (in sane_init).

| open("/usr/lib/sane/libsane-net.so.1", O_RDONLY) = 3

Net backend loading...

| close(3)                                = 0

And finished.

| open("/dev/sg1", O_RDWR|O_NONBLOCK|O_EXCL) = 3

Probably the canon backend accessing the SCSI device.

| select(4, [3], NULL, NULL, NULL)        = 1 (in [3])
| rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0
| read(3, "S\0\0\0\375\377\377\377\n@\0\0\4\0\0\0\340\360\377\277"..., 64) = 64

Waiting for data and reading it.

| rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
| rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0
| rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
| munmap(0x401cb000, 135168)              = 0
| close(3)                                = 0
| --- SIGSEGV (Segmentation fault) ---
| +++ killed by SIGSEGV +++#

I don't see a reason for segfaulting here but if no system call is
involved, it won't show up here.

Maybe the canon maintainer finds out what's happening but a gdb trace
would really help.

Bye,
  Henning