[Gambas-bugtracker] Bug #2794: gb.Scanner Class crashing at HP All-In-One Scanner C410

bugtracker at gambaswiki.org bugtracker at gambaswiki.org
Sun Oct 1 16:21:02 CEST 2023


http://gambaswiki.org/bugtracker/edit?object=BUG.2794&from=L21haW4-

Claus DIETRICH reported a new bug.

Summary
-------

gb.Scanner Class crashing at HP All-In-One Scanner C410

Type             : Bug
Priority         : Medium
Gambas version   : Master
Product          : Other components


Description
-----------

Before publishing my Gambas scanner app as AppImage I asked someone with a HP C410 scanner to test it. The app crashed on Debian Bookworm in the subroutine GetOptions() of the gb.scanner class. A simulation reproduced the crash and showed, that the options parser is not prepared for a scanner profile with lines like these:

   --contrast -127..127 [0] [advanced]

Such lines cause the parser to crash with "Bad Argument" in this line:

hOption._Steps = CFloat(Mid(aLine[1], RInStr(aLine[1], " ")))

It seems that the parser cannot handle the second [advance] parameter and likes to draft a non existing Step-value out of it for the range.

Profile of HP scanner C410:

Model: photosmart_prem_c410_series
Name: hpaio:/net/photosmart_prem_c410_series?ip=192.168.102.245&queue=false
Type: all-in-one
Vendor: Hewlett-Packard

All options specific to device “hpaio:/net/photosmart_prem_c410_series?ip=192.168.102.245&queue=false':
    --mode Lineart|Gray|Color [Color]
        Selects the scan mode (e.g., Lineart, monochrome, or color).
    --resolution 75|160|150|200|300|600dpi [75]
        Sets the resolution of the scanned image.
    --contrast -127..127 [0] [advanced]
        Controls the contrast of the acquired image.
    --brightness -127..127 [0] [advanced]
        Controls the brightness of the acquired image.
    --compression None|JPEG| [JPEG] [advanced]
        Selects the scanner compression method for faster scans, possibly at
        the expense of image quality.
    --jpeg-quality 0..100 [10] [advanced]
        Sets the scanner JPEG compression factor. Larger numbers mean better
        compression, and smaller numbers mean better image quality.
    --batch-scan[=(yes|no)] [no] [advanced]
        Enables continuous scanning with automatic document feeder (ADF).
    --source Auto|Flatbed|ADF [Auto] [advanced]
        Selects the scan source (such as a document-feeder).
   --duplex[=(yes|no)] [no] [advanced]
        Enables scanning on both sides of the page.
   --length-measurement Unknown|Approximate|Padded [Padded] [advanced]
        Selects how the scanned image length is measured and reported, which
        is impossible to know in advance for scrollfed scans.
   -l 0..215.9mm [0]
        Top-left x position of scan area.
   -t 0..381mm [0]
        Top-left y position of scan area.
   -x 0..215.9mm [215.9]
        Width of scan-area.
   -y 0..381mm [381]
        Height of scan-area.

I have no idea why the Debian Bookworm environment of the tester generates the above profile. On OpenSuse the same HP scanner C410 generates a different option profile which causes no problems:

Model: Photosmart_Prem_C410_series
Name: hpaio:/net/Photosmart_Prem_C410_series?ip=192.168.102.245
Type: all-in-one
Vendor: Hewlett-Packard

All options specific to device `hpaio:/net/Photosmart_Prem_C410_series?ip=192.168.123.465':
   Scan mode:
     --*mode Lineart|Gray|Color* [Color]
         Selects the scan mode (e.g., lineart, monochrome, or color).
     --*resolution 75|100|150|200|300|600dpi* [75]
         Sets the resolution of the scanned image.
   Advanced:
     --*contrast* -127..127 [0]
         Controls the contrast of the acquired image.
     --*brightness* -127..127 [0]
         Controls the brightness of the acquired image.
     --compression None|JPEG [JPEG]
         Selects the scanner compression method for faster scans, possibly at
         the expense of image quality.
     --jpeg-quality 0..100 [10]
         Sets the scanner JPEG compression factor. Larger numbers mean better
         compression, and smaller numbers mean better image quality.
     --batch-scan[=(yes|no)] [no]
         Enables continuous scanning with automatic document feeder (ADF).
     --source Auto|Flatbed|ADF [Auto]
         Selects the scan source (such as a document-feeder).
   Geometry:
     --length-measurement Unknown|Approximate|Padded [Padded]
         Selects how the scanned image length is measured and reported, which
         is impossible to know in advance for scrollfed scans.
     -l 0..215.9mm [0]
         Top-left x position of scan area.
     -t 0..381mm [0]
         Top-left y position of scan area.
     -x 0..215.9mm [215.9]
         Width of scan-area.
     -y 0..381mm [381]
         Height of scan-area.

However, I am assuming profiles like the above with the [advance] parameter are reality (I found some on the web). 
Following additional line prevented the crash, but it still needs to be confirmed whether the scanner now works with the app.
....
For Each s In Split(sRet, "\n")
    s = Trim(s)
    s = Replace(s, " [advanced]", "") 'Added by me to make the HP C410 compatible
....
I hope that Fabien can fix it. 

With best regards
Claus


System information
------------------

[System]
Gambas=3.18.4
OperatingSystem=Linux
Distribution=Linux Mint 20.3 Una
Kernel=5.4.0-163-generic
Architecture=x86_64
Cores=4
Memory=7821M
Language=de_DE.UTF-8
Desktop=CINNAMON
DesktopResolution=96
DesktopScale=7
WidgetTheme=mint-x
Font=Ubuntu,10

[Programs]
gcc=gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0

[Libraries]
Cairo=libcairo.so.2.11600.0
Curl=libcurl.so.4.6.0
DBus=libdbus-1.so.3.19.11
GDK2=libgdk-x11-2.0.so.0.2400.32
GDK3=libgdk-3.so.0.2404.16
GStreamer=libgstreamer-1.0.so.0.1603.0
GTK+2=libgtk-x11-2.0.so.0.2400.32
GTK+3=libgtk-3.so.0.2404.16
OpenGL=libGL.so.1.7.0
Poppler=libpoppler.so.97.0.0
QT5=libQt5Core.so.5.12.8
RSvg=librsvg-2.so.2.47.0
SDL=libSDL2-2.0.so.0.10.0
SQLite 3=libsqlite3.so.0.8.6

[Environment]
CINNAMON_VERSION=5.2.7
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=cinnamon
DISPLAY=:0
GB_GUI=gb.gtk3
GDMSESSION=cinnamon
GDM_LANG=de_DE
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=22185
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK3_MODULES=xapp-gtk3-module
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=1
HOME=<home>
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_ALL=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LOGNAME=<user>
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PWD=<home>
QT_ACCESSIBILITY=1
QT_LOGGING_RULES=*.debug=false
QT_QPA_PLATFORMTHEME=qt5ct
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1195,unix/<hostname>:/tmp/.ICE-unix/1195
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=1268
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
XDG_CURRENT_DESKTOP=X-Cinnamon
XDG_DATA_DIRS=/usr/share/cinnamon:/usr/share/gnome:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=cinnamon
XDG_SESSION_ID=c2
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7




More information about the Bugtracker mailing list