Sane/WIA/TWAIN: call get_device while this device is scanning causes LibInsane internal error
Way to reproduce:
- Start long scan session in first application with the device (dpi = 2400 in my case)
- Try to call
lis_api->get_device
with the same device id in another app
Result:
LIS_ERR_INTERNAL_UNKNOWN_ERROR
is returned
Expected result:
Regular behavior if possible, or LIS_ERR_HW_IS_LOCKED
or LIS_ERR_DEVICE_BUSY
error code else.
Logs:
Logs
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L158(lis_safebet): Initializing base implementations ...
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L202(lis_safebet): 2 base implementations initialized
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L204(lis_safebet): Initializing workarounds & normalizers ...
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_CHECK_CAPABILITIES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_CACHE=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_SOURCE_NODES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_MIN_ONE_SOURCE=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_ALL_OPTS_ON_ALL_SOURCES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_SOURCE_NAMES=1
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_names.c:L144(compile_regexes): Compiling regexes ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_names.c:L163(compile_regexes): Regexes compiled successfully
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_OPT_ALIASES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_OPT_VALUES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_OPT_NAMES=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_BMP2RAW=0
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_RAW24=0
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_RESOLUTION=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_SOURCE_TYPES=1
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_types.c:L34(compile_regexes): Compiling regexes ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_types.c:L53(compile_regexes): Regexes compiled successfully
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_ONE_PAGE_FLATBED=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_CLEAN_DEV_DESCS=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_NORMALIZER_SAFE_DEFAULTS=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L208(lis_safebet): LIBINSANE_WORKAROUND_DEDICATED_THREAD=1
[LibInsane:INFO] ../subprojects/libinsane/src/safebet.c:L220(lis_safebet): 15 workarounds & normalizers initialized
[LibInsane:INFO] ../subprojects/libinsane/src/workarounds/dedicated_thread.c:L153(main_loop): Dedicated thread started
[LibInsane:DEBUG] ../subprojects/libinsane/src/multiplexer.c:L176(lis_multi_list_devices): Getting devices from API 0
[LibInsane:INFO] ../subprojects/libinsane/src/bases/twain/twain.c:L582(twain_list_devices): TWAIN->list_devices()
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/twain/twain.c:L448(twain_init): TWAIN init: LoadLibrary(twaindsm.dll)
[LibInsane:INFO] ../subprojects/libinsane/src/bases/twain/twain.c:L452(twain_init): Failed to load Twain DLL: 0x7E
[LibInsane:DEBUG] ../subprojects/libinsane/src/multiplexer.c:L186(lis_multi_list_devices): Got 0 devices from API 0
[LibInsane:DEBUG] ../subprojects/libinsane/src/multiplexer.c:L176(lis_multi_list_devices): Getting devices from API 1
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L370(wiall_list_devices): wiall_list_devices() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L145(wiall_init): wiall_init() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L148(wiall_init): CoInitializeEx() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L150(wiall_init): CoInitializeEx(): 0x0
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L173(wiall_init): CoCreateInstance(IWiaDevMgr2) ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L181(wiall_init): CoCreateInstance(IWiaDevMgr2): 0x0
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L198(wiall_init): wiall_init() done
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L391(wiall_list_devices): EnumDeviceInfo() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L397(wiall_list_devices): EnumDeviceInfo(): 0x0
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L407(wiall_list_devices): IEnumWIA_DEV_INFO->GetCount() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L409(wiall_list_devices): IEnumWIA_DEV_INFO->GetCount(): 0x0
[LibInsane:INFO] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L422(wiall_list_devices): WIA2: Found 1 devices
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L444(wiall_list_devices): IEnumWIA_DEV_INFO->Next() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L452(wiall_list_devices): IEnumWIA_DEV_INFO->Next(): 0x0
[LibInsane:INFO] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L485(wiall_list_devices): WIA2: 1 devices kept
[LibInsane:INFO] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L490(wiall_list_devices): wiall_list_devices() successful
[LibInsane:DEBUG] ../subprojects/libinsane/src/multiplexer.c:L186(lis_multi_list_devices): Got 1 devices from API 1
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L1143(wiall_get_device): wiall_get_device({6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001) ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L1166(wiall_get_device): WiaItem2->CreateDevice({6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001) ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L1174(wiall_get_device): WiaItem2->CreateDevice({6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001): 0x80210006
[LibInsane:WARNING] ../subprojects/libinsane/src/bases/wia/util.c:L92(hresult_to_lis_error): Unknown Windows error code: 0x80210006
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L1180(wiall_get_device): WiaItem2->CreateDevice({6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001) failed: 0x80210006 -> 0x60000002, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L1184(wiall_get_device): wiall_get_device({6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001) failed
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): workaround_check_caps: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): normalizers_min_one_source: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/all_opts_on_all_sources.c:L125(opts_get_device): get_device(wia2ll:{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001) failed: 0x60000002, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): normalizer_source_names: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): workaround_opt_values: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): workaround_opt_names: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): normalizer_resolution: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): normalizer_source_types: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): one_page_flatbed: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:DEBUG] ../subprojects/libinsane/src/basewrapper.c:L212(lis_bw_get_device): normalizers_safe_defaults: get_device() failed: 1610612738, LibInsane internal error: Unknown error reported by backend (please report !)
[LibInsane:INFO] ../subprojects/libinsane/src/workarounds/dedicated_thread.c:L237(dt_impl_cleanup): Stopping dedicated thread
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_types.c:L62(free_regexes): Freeing regexes
[LibInsane:DEBUG] ../subprojects/libinsane/src/normalizers/source_names.c:L172(free_regexes): Freeing regexes
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L223(wiall_cleanup): wiall_cleanup() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L226(wiall_cleanup): IWiaDevMgr2->Release() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L230(wiall_cleanup): IWiaDevMgr2->Release() done
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L234(wiall_cleanup): CoUninitialize() ...
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L236(wiall_cleanup): CoUninitialize() done
[LibInsane:DEBUG] ../subprojects/libinsane/src/bases/wia/wia_ll.c:L240(wiall_cleanup): wiall_cleanup() done
[LibInsane:INFO] ../subprojects/libinsane/src/workarounds/dedicated_thread.c:L263(dt_impl_cleanup): Dedicated thread stopped
Environment:
HP Scanjet 300, driver: 14.5 July, 31 2015 (the latest one)
libinsane on commit 454fb78dfff8eb8e6d53567f7953e17a7bed6319
Windows 10 x64 10.0.14393
msys2-runtime 3.0.7-6
make 4.2.1-1
mingw-w64-x86_64-cunit 2.1.3-3
mingw-w64-x86_64-doxygen 1.8.16-1
mingw-w64-x86_64-gcc 9.2.0-2
mingw-w64-x86_64-gcc-libs 9.2.0-2
mingw-w64-x86_64-gobject-introspection 1.62.0-2
mingw-w64-x86_64-gobject-introspection-runtime 1.62.0-2
mingw-w64-x86_64-meson 0.52.0-2
mingw-w64-x86_64-python3 3.8.0-2
mingw-w64-x86_64-python3-gobject 3.34.0-2
mingw-w64-x86_64-vala 0.46.3-1
Edited by Jerome Flesch