Running lxc-start changes the permissions of stdout/stderr to 700.
The previous workaround of changing the permissions back after lxc-status
only worked because of the lxc-status loop in container_manager.start
Make it more generic by applying it to every caller of helpers.lxc.start
See: https://github.com/lxc/lxc/blob/
6564e6ccb22e6e3c6cf36e6ae3cb5d5f73122486/src/lxc/utils.c#L1859
set_permissions(args)
helpers.lxc.start(args)
set_permissions(args)
helpers.lxc.start(args)
- lxc_status = helpers.lxc.status(args)
- timeout = 10
- while lxc_status != "RUNNING" and timeout > 0:
- lxc_status = helpers.lxc.status(args)
- logging.info(
- "waiting {} seconds for container to start...".format(timeout))
- timeout = timeout - 1
- time.sleep(1)
- if lxc_status != "RUNNING":
- raise OSError("container failed to start")
-
services.hardware_manager.start(args)
def stop(args):
services.hardware_manager.start(args)
def stop(args):
import logging
import glob
import shutil
import logging
import glob
import shutil
import platform
import gbinder
import tools.config
import platform
import gbinder
import tools.config
def status(args):
command = ["lxc-info", "-P", tools.config.defaults["lxc"], "-n", "waydroid", "-sH"]
out = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8').strip()
def status(args):
command = ["lxc-info", "-P", tools.config.defaults["lxc"], "-n", "waydroid", "-sH"]
out = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8').strip()
- os.chmod(args.log, 0o666)
+def wait_for_running(args):
+ lxc_status = status(args)
+ timeout = 10
+ while lxc_status != "RUNNING" and timeout > 0:
+ lxc_status = status(args)
+ logging.info(
+ "waiting {} seconds for container to start...".format(timeout))
+ timeout = timeout - 1
+ time.sleep(1)
+ if lxc_status != "RUNNING":
+ raise OSError("container failed to start")
+
def start(args):
command = ["lxc-start", "-P", tools.config.defaults["lxc"],
"-F", "-n", "waydroid", "--", "/init"]
tools.helpers.run.user(args, command, output="background")
def start(args):
command = ["lxc-start", "-P", tools.config.defaults["lxc"],
"-F", "-n", "waydroid", "--", "/init"]
tools.helpers.run.user(args, command, output="background")
+ wait_for_running(args)
+ # Workaround lxc-start changing stdout/stderr permissions to 700
+ os.chmod(args.log, 0o666)
def stop(args):
command = ["lxc-stop", "-P",
def stop(args):
command = ["lxc-stop", "-P",