scanse / sweep-sdk

Sweep SDK
MIT License
90 stars 85 forks source link

Lock up when sweep_device_construct is called too soon after device connect #126

Open FPtje opened 7 years ago

FPtje commented 7 years ago

sweep firmware version

1.4

libsweep version + affected bindings

Libsweep on commit 8539c1c3d98478163cc1fb8f066a144f1e60171d, compiled with -DCMAKE_BUILD_TYPE=Release Also (with some effort) reproducable with the scanse tool on Windows. Affected bindings: probably all, I'm currently using my own Haskell binding.

operating system

Linux (NixOS), Windows (with scanse tool)

Platform/Hardware Setup

Tested with Scanse sweep V1.0

How to reproduce

  1. Disconnect Scanse device from USB
  2. Run a program that tries to open /dev/ttyUSB0 every 100ms or so. Ignore the opening serial port failed error and just keep trying.
  3. Connect the Scanse device while this program is running.
  4. Find that the program is blocking on the sweep_device_construct C call indefinitely.

Motivation

This negatively affects the stability of the device. I've written a program that will try to reconnect to the device after it disconnects. With this bug the program freezes and I have to resort to timeouts. A device not ready exception or an internal retry mechanism would be appreciated.