storaged-project / blivet

A python module for configuration of block devices
GNU Lesser General Public License v2.1
97 stars 85 forks source link

Error encountered while detecting Mac Intel devices #1239

Closed koitococo closed 2 months ago

koitococo commented 2 months ago

Description:

I use Anaconda Installer to install Fedora 40 on my mini PC, but installer crashed immediately.

Blivet detects Intel-based Apple Mac devices with the T2 security chip. The function is_t2mac relies on reading DMI information, but encounters errors when attempting to decode misconfigured information that cannot be interpreted as UTF-8. Specifically, the problem arises at buf = read_file(DMI_PRODUCT_NAME).strip().

Traceback:

```log May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ERROR:anaconda.modules.common.task.task:Thread AnaTaskThread-ScanDevicesTask-1 has failed: Traceback (most recent call last): May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/core/threads.py", line 280, in run May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: threading.Thread.run(self) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/threading.py", line 1010, in run May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self._target(*self._args, **self._kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/common/task/task.py", line 94, in _thread_run_callback May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self._task_run_callback() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/common/task/task.py", line 107, in _task_run_callback May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self._set_result(self.run()) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/storage/reset.py", line 64, in run May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self._reset_storage(self._storage) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/storage/reset.py", line 84, in _reset_storage May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: storage.reset() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/storage/devicetree/model.py", line 265, in reset May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: super().reset(cleanup_only=cleanup_only) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/blivet.py", line 149, in reset May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self.devicetree.populate(cleanup_only=cleanup_only) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/populator.py", line 446, in populate May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self._populate() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/populator.py", line 490, in _populate May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self.handle_device(dev) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/populator.py", line 309, in handle_device May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: self.handle_format(info, device) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/populator.py", line 335, in handle_format May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: helper_class = self._get_format_helper(info, device=device) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/populator.py", line 230, in _get_format_helper May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return get_format_helper(info, device=device) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/helpers/__init__.py", line 63, in get_format_helper May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return _six.next((h for h in _format_helpers if h.match(data, device=device)), None) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/helpers/__init__.py", line 63, in May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return _six.next((h for h in _format_helpers if h.match(data, device=device)), None) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/populator/helpers/boot.py", line 59, in match May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: fmt = formats.get_format(cls._type_specifier) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/formats/__init__.py", line 101, in get_format May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: fmt = fmt_class(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/formats/fs.py", line 1282, in __init__ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: super(MacEFIFS, self).__init__(**kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/formats/fs.py", line 167, in __init__ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: if self.supported: May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/threads.py", line 53, in run_with_lock May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return m(*args, **kwargs) May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/formats/fs.py", line 1277, in supported May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: return super(MacEFIFS, self).supported and arch.is_efi() and arch.is_mactel() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/arch.py", line 236, in is_mactel May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: elif is_t2mac(): May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/arch.py", line 221, in is_t2mac May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: buf = read_file(DMI_PRODUCT_NAME).strip() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "/usr/lib/python3.12/site-packages/blivet/util.py", line 630, in read_file May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: content = f.read() May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: ^^^^^^^^ May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: File "", line 322, in decode May 29 09:55:06 localhost-live org.fedoraproject.Anaconda.Modules.Storage[3359]: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte ```
vojtechtrefny commented 2 months ago

Closed via #1241