1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-23 14:58:09 +00:00

core: halt if the script ever runs out of the loop in main.py

This commit is contained in:
matejcik 2019-11-06 16:36:44 +01:00 committed by matejcik
parent 3349f737df
commit 7de5cec4b0
2 changed files with 13 additions and 10 deletions

View File

@ -71,13 +71,13 @@ def _boot_apps() -> None:
from trezor import loop, wire, workflow
while True:
# initialize the wire codec
wire.setup(usb.iface_wire)
if __debug__:
wire.setup(usb.iface_debug)
# initialize the wire codec
wire.setup(usb.iface_wire)
if __debug__:
wire.setup(usb.iface_debug)
_boot_apps()
loop.run()
_boot_apps()
loop.run()
# loop is empty, reboot
# loop is empty. That should not happen
utils.halt("All tasks have died.")

View File

@ -104,11 +104,14 @@ def _finalize_default(task: loop.Task, value: Any) -> None:
log.debug(__name__, "default closed: %s", task)
default_task = None
if not tasks and default_constructor:
if not tasks:
# No registered workflows are running and we are in the default task
# finalizer, so when this function finished, nothing will be running.
# We must schedule a new instance of the default now.
start_default(default_constructor)
if default_constructor is not None:
start_default(default_constructor)
else:
raise RuntimeError # no tasks and no default constructor
else:
if __debug__: