[sane-devel] Out of memory in sanei_scsi_cmd [was: "Annoying Out of MEmory Error..."]

abel deuring adeuring at gmx.net
Sat Sep 23 11:00:54 UTC 2006


Oliver,

> a user reported a problem with an Acer 620ST plugged into a Artop 
> Electronic Corp AEC6712D SCSI controller (atp870u driver). The system 
> causing problems is running linux-2.6.17-gentoo-r8, gcc 4.1.1 and 
> glibc-2.4, sane-backends-1.0.18.
> 
> On this system the following error occurs:
> 
> ...
> [snapscan] open_scanner
> [sanei_debug] Setting debug level of sanei_scsi to 255.
> [sanei_scsi] sanei_scsi_open: SG driver version: 30533
> [sanei_scsi] sanei_scsi_open_extended: using 131072 bytes as SCSI 
> buffer
> [sanei_scsi] trying to enable low level command queueing
> [sanei_scsi] sanei_scsi_open: Host adapter queue depth: 1
> [sanei_scsi] sanei_scsi_open: SG driver can change buffer size at run 
> time
> [sanei_scsi] sanei_scsi_open: using new SG header structure
> [snapscan] sane_snapscan_open: waiting for scanner to warm up.
> [snapscan] wait_scanner_ready
> ...
> [snapscan] send
> [snapscan] snapscan_cmd
> [sanei_scsi] scsi_req_enter: entered 0xb7c5e008
> [sanei_scsi] sanei_scsi.issue: 0xb7c5e008
> dev_max(currently)=32 max_active_device=1 (origin 1)
>  def_reserved_size=32768
>  >>> device=sg0 scsi1 chan=0 id=2 lun=0   em=0 sg_tablesize=128 excl=1
>    FD(1): timeout=120000ms bufflen=131072 (res)sgat=4 low_dma=0
>    cmd_q=1 f_packid=0 k_orphan=0 closed=0
>      rb>> act: id=9 blen=1024 t_o/elap=120000/8ms sgat=1 op=0x2a
> [sanei_scsi] scsi_req_enter: queue_used: 1, queue_max: 1
> [sanei_scsi] sanei_scsi_req_wait: waiting for 0xb7c5e008
> [sanei_scsi] sanei_scsi.issue: 0xb7c5e008
> dev_max(currently)=32 max_active_device=1 (origin 1)
>  def_reserved_size=32768
>  >>> device=sg0 scsi1 chan=0 id=2 lun=0   em=0 sg_tablesize=128 excl=1
>    FD(1): timeout=120000ms bufflen=131072 (res)sgat=4 low_dma=0
>    cmd_q=1 f_packid=0 k_orphan=0 closed=0
>      rb>> rcv: id=9 blen=1024 dur=108ms sgat=1 op=0x2a
> [sanei_scsi] sanei_scsi_req_wait: read 64 bytes
> [snapscan] measure_transfer_rate: have ring buffer
> [snapscan] scsi_read
> [snapscan] snapscan_cmd
> [sanei_scsi] scsi_req_enter: entered 0xb7c5e008
> [sanei_scsi] sanei_scsi.issue: 0xb7c5e008
> dev_max(currently)=32 max_active_device=1 (origin 1)
>  def_reserved_size=32768
>  >>> device=sg0 scsi1 chan=0 id=2 lun=0   em=0 sg_tablesize=128 excl=1
>    FD(1): timeout=120000ms bufflen=131072 (res)sgat=4 low_dma=0
>    cmd_q=1 f_packid=0 k_orphan=0 closed=0
>      No requests active
> [sanei_scsi] sanei_scsi.issue: bad write (errno=12) Cannot allocate 
> memory -1
> [sanei_scsi] sanei_scsi.issue: SG_BIG_BUF inconsistency? Check file 
> PROBLEMS.
> [sanei_scsi] scsi_req_enter: queue_used: 0, queue_max: 1
> [sanei_scsi] sanei_scsi_req_wait: waiting for 0xb7c5e008
> [sanei_scsi] sanei_scsi.issue: 0xb7c5e008
> [snapscan] scsi_read: snapscan_cmd command failed: Out of memory
> [snapscan] measure_transfer_rate: scsi_read command failed: Out of 
> memory
> [snapscan] sane_snapscan_start: measure_transfer_rate command failed: 
> Out of memory
> scanimage: sane_start: Out of memory
> ...
> 
> As far as I can tell I'm issuing a sanei_scsi_cmd with a send buffer 
> of ten bytes and a receive buffer of 130176 bytes. Both should fit 
> into the SCSI buffer of 131072 bytes easily.

is 130176 a typo, or does the backend really wants to read 4 bytes
more than reserved? (or do I misunderstand something?) I could not
find the the number 130176 anywhere else.

This point aside, I don't have a really good hint, except that I
have the impression that the Linux atp870u driver is not the best
piece of code in the kernel. Maintainance of the driver was, at
least some time ago, a bit unclear. Moreover, another user recently
reported problems with this driver on the list; he could use his
scanner fine after replacing the adapter with a properly supported one.

> 
> To make matters even stranger, the same SCSI card and scanner works 
> fine on 
> Ubuntu 6.06 LTS,
> kernel: 2.6.15-23-386
> gcc:     GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
> glibc:    2.3.6
> sane-backends: 1.0.17
> 
> Does anybody of the experts have any idea what's going on?

not really -- but I believe that it would be best to ask on the
linux-scsi mailing list for help: To me, it looks like a problem of
the driver or perhaps the kernel. But it might be easier for the
user to simply replace the adapter with one supported by the aic7xxx
driver or the sym83c5xx driver. They are available for a few
Euro/Dollar on Ebay.

Abel



More information about the sane-devel mailing list