From 9d4bc76304a4c205c55c47b1a99ab77155fdf51b Mon Sep 17 00:00:00 2001 From: Drakarah Date: Mon, 15 Dec 2025 08:03:08 +0000 Subject: [PATCH] Don't crash if any attribute fails to serialize --- glances/plugins/smart/__init__.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/glances/plugins/smart/__init__.py b/glances/plugins/smart/__init__.py index ed8fbe8e..319b0605 100644 --- a/glances/plugins/smart/__init__.py +++ b/glances/plugins/smart/__init__.py @@ -132,7 +132,13 @@ def get_smart_data(): if isinstance(dev.if_attributes, NvmeAttributes): idx = 0 for attr in dev.if_attributes.__dict__.keys(): - attrib_dict = convert_nvme_attribute_to_dict(attr, dev.if_attributes.__dict__[attr]) + try: + attrib_dict = convert_nvme_attribute_to_dict(attr, dev.if_attributes.__dict__[attr]) + if dev.if_attributes.__dict__[attr] is not None: + serialized = str(dev.if_attributes.__dict__[attr]) + except Exception as e: + logger.debug(f'Unable to serialize attribute {attr} from NVME') + idx +=1 stats[-1][idx] = attrib_dict @@ -217,8 +223,13 @@ class SmartPlugin(GlancesPluginModel): device_stat[smart_stat]['name'][: name_max_width - 1].replace('_', ' '), width=name_max_width - 1 ) ret.append(self.curse_add_line(msg)) - raw = device_stat[smart_stat]['raw'] - msg = '{:>8}'.format("" if raw is None else str(raw)) - ret.append(self.curse_add_line(msg)) + try: + raw = device_stat[smart_stat]['raw'] + msg = '{:>8}'.format("" if raw is None else str(raw)) + ret.append(self.curse_add_line(msg)) + except Exception as e: + logger.debug(f"Failed to serialize {smart_stat}") + meg = "" + ret.append(self.curse_add_line(msg)) return ret