cannot lock /dev/ttyusb_port1: Resource temporarily unavailable
Rahix
rahix at rahix.de
Mon Oct 9 01:07:14 CEST 2023
Hi Simon,
On Sun, 2023-10-08 at 14:16 -0600, Simon Glass wrote:
> Hi,
>
> Since an update to Ubuntu 2022.04 on my lab machine I cannot get
> boards to connect:
>
> Revision 7d1e5aacdb44bdc2139197a60d8c97c9062d5064, board rpi3
>
> Checking revision 7d1e5aacdb44bdc2139197a60d8c97c9062d5064
> /vid/software/devel/ubtest
> tbot starting ...
> ├─Parameters:
> │ rev = '7d1e5aacdb44bdc2139197a60d8c97c9062d5064'
> │ clean = False
> ├─Calling uboot_build_and_flash ...
> │ ├─Calling uboot_build ...
> │ │ ├─Calling uboot_checkout ...
> │ │ │ ├─Builder: rpi3
> │ │ │ └─Done. (6.016s)
> │ │ ├─Configuring build ...
> │ │ ├─Calling uboot_make ...
> │ │ │ └─Done. (10.188s)
> │ │ └─Done. (18.444s)
> │ ├─Calling uboot_flash ...
> │ │ ├─Calling copy ...
> │ │ │ └─Done. (0.004s)
> │ │ └─Done. (0.646s)
> │ └─Done. (19.390s)
> ├─────────────────────────────────────────
> └─SUCCESS (19.486s)
> tbot starting ...
> ├─Calling interactive_board ...
> │ ├─POWERON (rpi3)
> │ ├─Entering interactive shell (CTRL+D to exit) ...
>
> FATAL: cannot lock /dev/ttyusb_port1: Resource temporarily unavailable
This is a telltale sign that there is still a session with the console
open somewhere. This can either happen
- on the remote side (e.g. a picocom process lingering after the ssh
session closed)
- or locally (an ssh process not getting SIGTERMed correctly).
The latter shouldn't be possible with the paramiko connector unless you
start tbot multiple times within a single python interpreter and somehow
manage to leak channels.
> (after it hangs forever here, I press ctrl-D)
>
> logout
> │ ├─POWEROFF (rpi3)
> │ ├─Exiting poweroff
> │ └─Fail. (77.542s)
> ├─Warning: Found dangling <class 'rpi3.Rpi3'> instance in this context
> ├─Warning: Teardown went wrong! A <class 'rpi3.Rpi3'> instance is still alive.
> │ Please report this to https://github.com/rahix/tbot/issues!
This here is looking very interesting to me. Even when everything is
broken, you should not be able to produce this error... Might be
related.
In any case, I think it would be easiest to diagnose this with a bit
more info about your setup. Can you share
- how are you invoking tbot?
- what terminal emulator are you using to open the console sessions?
- if possible, the board & lab config which produces this error
Best regards,
Harald
--
> ├─Exception:
> │ Traceback (most recent call last):
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/main.py",
> line 345, in main
> │ func(**params)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/decorators.py",
> line 62, in wrapped
> │ return tc(*args, **kwargs)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/tc/callable.py",
> line 43, in interactive_board
> │ with tbot.ctx.request(tbot.role.Board) as b:
> │ File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
> │ self.gen.throw(typ, value, traceback)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/context.py",
> line 359, in request
> │ with instance.request(exclusive, self._keep_alive) as m:
> │ File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
> │ self.gen.throw(typ, value, traceback)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/context.py",
> line 94, in request
> │ self.teardown()
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/context.py",
> line 65, in teardown
> │ self._cx.close()
> │ File "/usr/lib/python3.10/contextlib.py", line 584, in close
> │ self.__exit__(None, None, None)
> │ File "/usr/lib/python3.10/contextlib.py", line 576, in __exit__
> │ raise exc_details[1]
> │ File "/usr/lib/python3.10/contextlib.py", line 561, in __exit__
> │ if cb(*exc_details):
> │ File "/usr/lib/python3.10/contextlib.py", line 142, in __exit__
> │ next(self.gen)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/connector/common.py",
> line 126, in from_context
> │ with contextlib.ExitStack() as cx:
> │ File "/usr/lib/python3.10/contextlib.py", line 576, in __exit__
> │ raise exc_details[1]
> │ File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
> │ self.gen.throw(typ, value, traceback)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/context.py",
> line 379, in request
> │ raise e from None
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/context.py",
> line 366, in request
> │ yield m
> │ File "/usr/lib/python3.10/contextlib.py", line 561, in __exit__
> │ if cb(*exc_details):
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/machine.py",
> line 186, in __exit__
> │ self._cx.__exit__(*args)
> │ File "/usr/lib/python3.10/contextlib.py", line 576, in __exit__
> │ raise exc_details[1]
> │ File "/usr/lib/python3.10/contextlib.py", line 561, in __exit__
> │ if cb(*exc_details):
> │ File "/usr/lib/python3.10/contextlib.py", line 142, in __exit__
> │ next(self.gen)
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/connector/common.py",
> line 133, in _connect
> │ with self.host.clone() as cloned, self.connect(cloned) as ch:
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/channel/channel.py",
> line 562, in __exit__
> │ self.close()
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/channel/channel.py",
> line 540, in close
> │ self._c.close()
> │ File "/home/sglass/.local/lib/python3.10/site-packages/tbot/machine/channel/paramiko.py",
> line 58, in close
> │ raise channel.ChannelClosedException()
> │ tbot.machine.channel.channel.ChannelClosedException
> ├─────────────────────────────────────────
> └─FAILURE (77.579s)
>
>
> If I then connect again, it works, mostly. Has something changed in
> paramiko? Any clues?
>
> Regards,
> Simon
More information about the tbot
mailing list