Race between udev waiting APIs & ConnectDevice
On some boards (like FRDM-K64F) as we flash the board it will reset the usb connection which causes the tty device to go away and come back. This has a race:
In the lava_dispatcher if we look cmsis_dap.py, we have code:
def populate(self, parameters): … if resets_after_flash: self.internal_pipeline.add_action(WaitUSBSerialDeviceAction()) self.internal_pipeline.add_action(ConnectDevice())
We tend to utilize the /dev/serial/by-id/ symlink device paths to have persistent device names. So, in that case there are 2 different events (one for the tty being created, the second event for the symlink existing). Typically these 2 events effectively appear at the same time, however its possible that there's a delay between these 2 events. In that case the ConnectDevice() has the potential to fail.