Open
Description
At the end of the uinput
constructor, it calls self._find_device()
.
This function does the following:
def _find_device(self):
#:bug: the device node might not be immediately available
time.sleep(0.1)
for path in util.list_devices('/dev/input/'):
d = device.InputDevice(path)
if d.name == self.name:
return d
If between util.list_devices('/dev/input/'):
being called and device.InputDevice(path)
being called, the device of path
closes, this leads to a thrown exception.
This exception propagates through the constructor, which has opened a filedescriptor from uinput. That fd never closes.
This leads to a duplicate device.
Metadata
Metadata
Assignees
Labels
No labels