1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-24 15:28:10 +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,7 +71,6 @@ def _boot_apps() -> None:
from trezor import loop, wire, workflow from trezor import loop, wire, workflow
while True:
# initialize the wire codec # initialize the wire codec
wire.setup(usb.iface_wire) wire.setup(usb.iface_wire)
if __debug__: if __debug__:
@ -80,4 +79,5 @@ while True:
_boot_apps() _boot_apps()
loop.run() 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) log.debug(__name__, "default closed: %s", task)
default_task = None default_task = None
if not tasks and default_constructor: if not tasks:
# No registered workflows are running and we are in the default task # No registered workflows are running and we are in the default task
# finalizer, so when this function finished, nothing will be running. # finalizer, so when this function finished, nothing will be running.
# We must schedule a new instance of the default now. # We must schedule a new instance of the default now.
if default_constructor is not None:
start_default(default_constructor) start_default(default_constructor)
else:
raise RuntimeError # no tasks and no default constructor
else: else:
if __debug__: if __debug__: