* [PATCH] PM: tools: fix ValueError when parsing incomplete device properties
@ 2026-04-24 7:12 Gongwei Li
2026-04-30 17:26 ` Todd Brandt
2026-04-30 17:38 ` Todd Brandt
0 siblings, 2 replies; 4+ messages in thread
From: Gongwei Li @ 2026-04-24 7:12 UTC (permalink / raw)
To: Todd E Brandt; +Cc: linux-pm, linux-kernel, Gongwei Li
From: Gongwei Li <ligongwei@kylinos.cn>
When parsing device properties from ftrace data, the devprops() function
assumes that each line has at least three fields and that the third field
(f[2]) always contains a valid integer. However, due to incomplete or
corrupted ftrace logs, f[2] may be missing, empty, or non-existent.
This can lead to the following error:
Traceback (most recent call last):
File "../sleepgraph.py", line 7142, in <module>
stamp = rerunTest(sysvals.outdir)
File "../sleepgraph.py", line 6255, in rerunTest
testruns, stamp = processData()
File "../sleepgraph.py", line 6181, in processData
testruns, error = parseTraceLog(live)
File "../sleepgraph.py", line 3470, in parseTraceLog
tp, tf = loadTraceLog()
File "../sleepgraph.py", line 3398, in loadTraceLog
if tp.stampInfo(line, sysvals):
File "../sleepgraph.py", line 3073, in stampInfo
self.parsePlatformInfo(line, sv)
File "../sleepgraph.py", line 3177, in parsePlatformInfo
sv.devprops = self.devprops(sv.b64unzip(info))
File "../sleepgraph.py", line 3158, in devprops
if int(f[2]):
ValueError: invalid literal for int() with base 10: ''
To prevent this crash, add proper validation before accessing.
Signed-off-by: Gongwei Li <ligongwei@kylinos.cn>
---
tools/power/pm-graph/sleepgraph.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/power/pm-graph/sleepgraph.py b/tools/power/pm-graph/sleepgraph.py
index 1555b51a7d55..f6d172254829 100755
--- a/tools/power/pm-graph/sleepgraph.py
+++ b/tools/power/pm-graph/sleepgraph.py
@@ -3155,7 +3155,7 @@ class TestProps:
dev = f[0]
props[dev] = DevProps()
props[dev].altname = f[1]
- if int(f[2]):
+ if len(f) > 2 and f[2] and int(f[2]):
props[dev].isasync = True
else:
props[dev].isasync = False
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] PM: tools: fix ValueError when parsing incomplete device properties
2026-04-24 7:12 [PATCH] PM: tools: fix ValueError when parsing incomplete device properties Gongwei Li
@ 2026-04-30 17:26 ` Todd Brandt
2026-04-30 17:38 ` Todd Brandt
1 sibling, 0 replies; 4+ messages in thread
From: Todd Brandt @ 2026-04-30 17:26 UTC (permalink / raw)
To: Gongwei Li, Wysocki, Rafael J; +Cc: linux-pm, linux-kernel, Gongwei Li
On Fri, 2026-04-24 at 15:12 +0800, Gongwei Li wrote:
> From: Gongwei Li <ligongwei@kylinos.cn>
>
> When parsing device properties from ftrace data, the devprops()
> function
> assumes that each line has at least three fields and that the third
> field
> (f[2]) always contains a valid integer. However, due to incomplete or
> corrupted ftrace logs, f[2] may be missing, empty, or non-existent.
>
> This can lead to the following error:
>
> Traceback (most recent call last):
> File "../sleepgraph.py", line 7142, in <module>
> stamp = rerunTest(sysvals.outdir)
> File "../sleepgraph.py", line 6255, in rerunTest
> testruns, stamp = processData()
> File "../sleepgraph.py", line 6181, in processData
> testruns, error = parseTraceLog(live)
> File "../sleepgraph.py", line 3470, in parseTraceLog
> tp, tf = loadTraceLog()
> File "../sleepgraph.py", line 3398, in loadTraceLog
> if tp.stampInfo(line, sysvals):
> File "../sleepgraph.py", line 3073, in stampInfo
> self.parsePlatformInfo(line, sv)
> File "../sleepgraph.py", line 3177, in parsePlatformInfo
> sv.devprops = self.devprops(sv.b64unzip(info))
> File "../sleepgraph.py", line 3158, in devprops
> if int(f[2]):
> ValueError: invalid literal for int() with base 10: ''
>
> To prevent this crash, add proper validation before accessing.
>
> Signed-off-by: Gongwei Li <ligongwei@kylinos.cn>
> ---
> tools/power/pm-graph/sleepgraph.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/power/pm-graph/sleepgraph.py b/tools/power/pm-
> graph/sleepgraph.py
> index 1555b51a7d55..f6d172254829 100755
> --- a/tools/power/pm-graph/sleepgraph.py
> +++ b/tools/power/pm-graph/sleepgraph.py
> @@ -3155,7 +3155,7 @@ class TestProps:
> dev = f[0]
> props[dev] = DevProps()
> props[dev].altname = f[1]
> - if int(f[2]):
> + if len(f) > 2 and f[2] and int(f[2]):
> props[dev].isasync = True
> else:
> props[dev].isasync = False
This looks good, thanks for the catch! Raphael can you apply this?
Signed-off-by: Todd Brandt <todd.e.brandt@intel.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PM: tools: fix ValueError when parsing incomplete device properties
2026-04-24 7:12 [PATCH] PM: tools: fix ValueError when parsing incomplete device properties Gongwei Li
2026-04-30 17:26 ` Todd Brandt
@ 2026-04-30 17:38 ` Todd Brandt
2026-04-30 18:35 ` Rafael J. Wysocki
1 sibling, 1 reply; 4+ messages in thread
From: Todd Brandt @ 2026-04-30 17:38 UTC (permalink / raw)
To: Gongwei Li, Wysocki, Rafael J; +Cc: linux-pm, linux-kernel, Gongwei Li
On Fri, 2026-04-24 at 15:12 +0800, Gongwei Li wrote:
> From: Gongwei Li <ligongwei@kylinos.cn>
>
> When parsing device properties from ftrace data, the devprops()
> function
> assumes that each line has at least three fields and that the third
> field
> (f[2]) always contains a valid integer. However, due to incomplete or
> corrupted ftrace logs, f[2] may be missing, empty, or non-existent.
>
> This can lead to the following error:
>
> Traceback (most recent call last):
> File "../sleepgraph.py", line 7142, in <module>
> stamp = rerunTest(sysvals.outdir)
> File "../sleepgraph.py", line 6255, in rerunTest
> testruns, stamp = processData()
> File "../sleepgraph.py", line 6181, in processData
> testruns, error = parseTraceLog(live)
> File "../sleepgraph.py", line 3470, in parseTraceLog
> tp, tf = loadTraceLog()
> File "../sleepgraph.py", line 3398, in loadTraceLog
> if tp.stampInfo(line, sysvals):
> File "../sleepgraph.py", line 3073, in stampInfo
> self.parsePlatformInfo(line, sv)
> File "../sleepgraph.py", line 3177, in parsePlatformInfo
> sv.devprops = self.devprops(sv.b64unzip(info))
> File "../sleepgraph.py", line 3158, in devprops
> if int(f[2]):
> ValueError: invalid literal for int() with base 10: ''
>
> To prevent this crash, add proper validation before accessing.
>
> Signed-off-by: Gongwei Li <ligongwei@kylinos.cn>
> ---
> tools/power/pm-graph/sleepgraph.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/power/pm-graph/sleepgraph.py b/tools/power/pm-
> graph/sleepgraph.py
> index 1555b51a7d55..f6d172254829 100755
> --- a/tools/power/pm-graph/sleepgraph.py
> +++ b/tools/power/pm-graph/sleepgraph.py
> @@ -3155,7 +3155,7 @@ class TestProps:
> dev = f[0]
> props[dev] = DevProps()
> props[dev].altname = f[1]
> - if int(f[2]):
> + if len(f) > 2 and f[2] and int(f[2]):
> props[dev].isasync = True
> else:
> props[dev].isasync = False
This looks good, thanks for the catch! Rafael can you apply this?
Signed-off-by: Todd Brandt <todd.e.brandt@intel.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PM: tools: fix ValueError when parsing incomplete device properties
2026-04-30 17:38 ` Todd Brandt
@ 2026-04-30 18:35 ` Rafael J. Wysocki
0 siblings, 0 replies; 4+ messages in thread
From: Rafael J. Wysocki @ 2026-04-30 18:35 UTC (permalink / raw)
To: todd.e.brandt, Gongwei Li
Cc: Wysocki, Rafael J, linux-pm, linux-kernel, Gongwei Li
On Thu, Apr 30, 2026 at 7:38 PM Todd Brandt
<todd.e.brandt@linux.intel.com> wrote:
>
> On Fri, 2026-04-24 at 15:12 +0800, Gongwei Li wrote:
> > From: Gongwei Li <ligongwei@kylinos.cn>
> >
> > When parsing device properties from ftrace data, the devprops()
> > function
> > assumes that each line has at least three fields and that the third
> > field
> > (f[2]) always contains a valid integer. However, due to incomplete or
> > corrupted ftrace logs, f[2] may be missing, empty, or non-existent.
> >
> > This can lead to the following error:
> >
> > Traceback (most recent call last):
> > File "../sleepgraph.py", line 7142, in <module>
> > stamp = rerunTest(sysvals.outdir)
> > File "../sleepgraph.py", line 6255, in rerunTest
> > testruns, stamp = processData()
> > File "../sleepgraph.py", line 6181, in processData
> > testruns, error = parseTraceLog(live)
> > File "../sleepgraph.py", line 3470, in parseTraceLog
> > tp, tf = loadTraceLog()
> > File "../sleepgraph.py", line 3398, in loadTraceLog
> > if tp.stampInfo(line, sysvals):
> > File "../sleepgraph.py", line 3073, in stampInfo
> > self.parsePlatformInfo(line, sv)
> > File "../sleepgraph.py", line 3177, in parsePlatformInfo
> > sv.devprops = self.devprops(sv.b64unzip(info))
> > File "../sleepgraph.py", line 3158, in devprops
> > if int(f[2]):
> > ValueError: invalid literal for int() with base 10: ''
> >
> > To prevent this crash, add proper validation before accessing.
> >
> > Signed-off-by: Gongwei Li <ligongwei@kylinos.cn>
> > ---
> > tools/power/pm-graph/sleepgraph.py | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/tools/power/pm-graph/sleepgraph.py b/tools/power/pm-
> > graph/sleepgraph.py
> > index 1555b51a7d55..f6d172254829 100755
> > --- a/tools/power/pm-graph/sleepgraph.py
> > +++ b/tools/power/pm-graph/sleepgraph.py
> > @@ -3155,7 +3155,7 @@ class TestProps:
> > dev = f[0]
> > props[dev] = DevProps()
> > props[dev].altname = f[1]
> > - if int(f[2]):
> > + if len(f) > 2 and f[2] and int(f[2]):
> > props[dev].isasync = True
> > else:
> > props[dev].isasync = False
>
> This looks good, thanks for the catch! Rafael can you apply this?
>
> Signed-off-by: Todd Brandt <todd.e.brandt@intel.com>
Changed the tag to Acked-by and applied the patch as 7.2 material, thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-30 18:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-24 7:12 [PATCH] PM: tools: fix ValueError when parsing incomplete device properties Gongwei Li
2026-04-30 17:26 ` Todd Brandt
2026-04-30 17:38 ` Todd Brandt
2026-04-30 18:35 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox