Hello,

thank you for spending your time helping to make Debian better with this bug
report. 


Am Donnerstag, dem 23.05.2024 um 09:04 +0000 schrieb Ceppo:
> Package: sane-utils
> Version: 1.3.0-1
> Severity: normal
> 
> 
> Sumary: man says --buffer-size gets a value in KB, but scanimage actually
> assumes it is MB.
> 
> 
> 
> Today I tried to scan with a command that used to work until last week (when I
> updated sane-utils from 1.2.1-7+b3 to 1.3.0-1) and got an error:
> 
>    ceppo@mypc:~/Pictures/scan$ scanimage --format=png --output-file=out.png --
> resolution=300 --mode=Color
>    [07:57:39.150351] [hp5590] hp5590_bulk_read: USB-in-USB: buffer too small
>    scanimage: sane_read: Out of memory
> 
> So I tried to increase the buffer size. man says
> 
>     -B [size], --buffer-size=size
>            changes input buffer size from the default of 1MB to size KB.
> 
> and usually my scans are around 4MB each, so I tried to increase the buffer
> size to 5MB with --buffer-size=5000:
> 
>       ceppo@mypc:~/Pictures/scan$ scanimage --format=png --output-
> file=out.png --resolution=300 --mode=Color --buffer-size=5000
>     [07:58:34.930476] [hp5590] Data requested won't fit in the bulk read
> buffer (requested: 5117850, buffer size: 1048576
>     scanimage: sane_read: Out of memory
> 
> I assumed the output message uses bytes, therefore complaining about me
> requesting a 5GB buffer. So I tried --buffer-size=5 and I got my scan (4.5MB).
> 
 
The parameters -B or --buffer-size are read in with the following code:

[quote]
        case 'B':
          buffer_size = 1024 * atoi(optarg);
[\quote]


The buffer is created with the following code:

[quote]
        buffer = malloc (buffer_size);
[/quote]

This means that the size of the buffer is correct according to the
specifications



The error message "[hp5590] Data requested won't fit in the bulk read buffer
(requested: 5117850, buffer size: 1048576" comes from the backend hp5590

[quote]
 /* Check if requested data would fit into the buffer */
  if (size > bulk_read_state->buffer_size)
    {
      DBG (DBG_err, "Data requested won't fit in the bulk read buffer "
           "(requested: %u, buffer size: %u\n", size,
           bulk_read_state->buffer_size);
      return SANE_STATUS_NO_MEM;
    }
[/quote]

bulk_read_state->buffer_size is created with the following code:

[quote]
bulk_read_state->buffer_size = ALLOCATE_BULK_READ_PAGES
                                 * BULK_READ_PAGE_SIZE;
[/quote]


IMHO this buffer is only used to temporarily store a scanned line and the size
is determined via

[quote]
#define ALLOCATE_BULK_READ_PAGES        16      /* 16 * 65536 = 1Mb */
#define BULK_READ_PAGE_SIZE             0x10000
[/quote]


> I don't know what's the expected behaviour, but of course doc and actual
> behaviour should be consistent.
> 


Conclusion:

The buffer in scanimage is created in the correct size. The documentation
corresponds to the calculation (kB).


The error is probably in the backend hp5990. Please contact the developers
directly[1][2].


> Cheers,
> 
> 
> --
> Ceppo

CU
Jörg

[1] Mailinglist sane-de...@alioth-lists.debian.net
[2] https://gitlab.com/sane-project/backends/-/issues
-- 
New:
GPG Fingerprint: 63E0 075F C8D4 3ABB 35AB  30EE 09F8 9F3C 8CA1 D25D
GPG key (long) : 09F89F3C8CA1D25D
GPG Key        : 8CA1D25D
CAcert Key S/N : 0E:D4:56


Jörg Frings-Fürst
D-54470 Lieser


git:      https://git.jff.email/cgit/

Skype:    jff-skype@jff.email
Jami:     joergfringsfuerst
Telegram: @joergfringsfuerst
Matrix:   @joergff:matrix.snct-gmbh.de

My wish list: 
 - Please send me a picture from the nature at your home.




Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to