v4l2 camera open hangs

I have 3 USB (UVC) cameras connected to my TX2 (Ubuntu 16.04) and it works well but sometimes I get a problem with that one of them hangs on open.

From the command line (logged in over SSH) I can easily see in the log that the open hangs, if I at this point press CTRL-c the hang goes away (the device is opened) and the executable exits.

What baffles me is that it is on

//C++
open("/dev/video0", O_RDWR);

the first action I need to do to use the device. Not later if I would set something weird by mistake.
The CTRL-c indicates to me that there is something holding the open command that gets interrupted because of this keypress.

I have tried with opening the cameras one after another on a single thread and running them on separate threads but still the same problem.

Any insights into how to avoid this is appreciated?

Could you try the v4l2-ctl to verify the problem.

v4l2-ctl --stream-mmap -d /dev/video0

The problem came down to that the USB ports are unstable in electrical terms. After that my HW guy made the USB ports more stable as in power supply and electrical conductivity this problem has not come back.

The problem with the accepted answer is that it only tests the cameras one by one. To use this one would have to use multiple terminals/SSH to test all cameras at once.