Global config does not open

When I go to the qubes manager and try to open global config a loading window opens for about 1 second and then closes. In the terminal it gives the following error output.

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/qrexec/policy/parser.py", line 1280, in from_line
    service, argument, source, target, action, *params = line.split()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected at least 5, got 1)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/global_config.py", line 207, in do_activate
    self.perform_setup()
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/global_config.py", line 285, in perform_setup
    self.handlers['usb'] = DevicesHandler(
                           ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/usb_devices.py", line 644, in __init__
    self.input_handler = InputDeviceHandler(
                         ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/usb_devices.py", line 125, in __init__
    self.load_rules()
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/usb_devices.py", line 153, in load_rules
    self.policy_manager.get_rules_from_filename(
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/policy_manager.py", line 87, in get_rules_from_filename
    rules = self.text_to_rules(rules_text)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/qubes_config/global_config/policy_manager.py", line 121, in text_to_rules
    return StringPolicy(policy={'__main__': text}).rules
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/qrexec/policy/parser.py", line 2073, in __init__
    self.load_policy_file(file, filepath)
  File "/usr/lib/python3.11/site-packages/qrexec/policy/parser.py", line 2006, in load_policy_file
    super().load_policy_file(file, filepath)
  File "/usr/lib/python3.11/site-packages/qrexec/policy/parser.py", line 1475, in load_policy_file
    self.rule_type.from_line(
  File "/usr/lib/python3.11/site-packages/qrexec/policy/parser.py", line 1282, in from_line
    raise PolicySyntaxError(
qrexec.exc.PolicySyntaxError: __main__[in-memory]:1: wrong number of fields

Could this be a relic from doing an in-place update from 4.1 to 4.2?

Yes. I emphasize this from Qubes OS 4.2 release notes:

Qrexec services use new qrexec policy format by default (but old format is still supported) (#8000)

You might have a policy file in old format (or wrong format) which might be the source of the issue.

Maybe you have some error in /etc/qubes/policy.d/50-config-input.policy in dom0. Check this file content.

1 Like

THIS IS AN AUTOMATICALLY GENERATED POLICY FILE.

Any changes made manually may be overwritten by Qubes Configuration Tools.

qubes.InputMouse * sys-usb @adminvm ask default_target=@adminvm

This looks right, no?

Looks OK. Maybe some other file has qubes.Input* policy with error.
What’s the output of this command in dom0?

grep -r "qubes.Input" /etc/qubes/policy.d

The only file containing that string is /etc/qubes/policy.d/50-config-input.policy

Then maybe while parsing all files in directory it fails because it’s encountered a line containing a single string and don’t know what to do with it.
Check the files in that directory to see if there is a line that has only one string.