summaryrefslogtreecommitdiff
path: root/hw/bsp/samd11/boards/samd11_xplained
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2026-08-27 08:43:02 +0700
committerGitHub <[email protected]>2026-08-27 08:43:02 +0700
commitd799b6f572e4b39ebebcf72126d3120f7829c034 (patch)
tree788472b0bb45dc9fca9881e44dce36cc3fdf132e /hw/bsp/samd11/boards/samd11_xplained
parentb15c720ab0a36ee16c1cf7984c7c0f4ccf3a7015 (diff)
test/hil: run the HID echo in a child, which is the only bound that works (#3852)HEADmaster
hid_generic_inout was the last unbounded blocking IO in the file. hidapi's hidraw backend reads manufacturer/product via udev for each device reaching create_device_info_for_device, both usb_string_attr served under the device lock a wedged usbfs ioctl holds — and every DUT here is VID cafe, so a wedged sibling stalls the walk. A thread cannot bound it: cython-hidapi calls hid_open and hid_close bare (0.15.0 hid.pyx), so they hold the GIL and the waiter can never resume. Measured — a 1.0s bound never returned. run_cmd's killpg reaches a child regardless; it gains an argv form for the -c body. Filters on both ids: hidapi only runs the free uevent pre-check when ids are passed (linux/hid.c:962), so an unfiltered walk sends every device straight to the locked reads. Tests stall via ctypes.PyDLL, which unlike CDLL holds the GIL — the shape a thread bound cannot cover.
Diffstat (limited to 'hw/bsp/samd11/boards/samd11_xplained')
0 files changed, 0 insertions, 0 deletions