Re: [PATCH 0/3] perf tools: Enable strict JSON parsing
From: Arnaldo Carvalho de Melo <acme@kernel.org>
Date: 2021-10-08 19:00:40
Also in:
linux-arm-kernel, lkml
Em Fri, Oct 08, 2021 at 04:56:55PM +0530, kajoljain escreveu:
On 10/8/21 3:32 PM, James Clark wrote:quoted
On 08/10/2021 08:43, kajoljain wrote:quoted
On 10/7/21 4:35 PM, James Clark wrote:quoted
After a discussion on "[PATCH 1/4] perf vendor events: Syntax corrections in Neoverse N1 json", John Garry suggested that we can just modify the parser to make it more strict. Hopefully this will remove the need to apply any future JSON comma fixup commits. Applies on top of "[PATCH v2 1/3] perf vendor events: Syntax corrections in Neoverse N1 json" on perf/core. Also available at: git clone --branch james-json-parse-fix git@git.gitlab.arm.com:linux-arm/linux-jc.gitHi James, Do we have any dependency patches on top of this patch series. I am reviewing and testing it, but in both powerpc and x86 system I am getting build issue. Not sure if I am missing something> I am trying your changes on top of upstream perf. pmu-events/arch/test/test_soc/sys/uncore.json: json error Invalid character inside JSON stringHi Kajol, A trailing comma was fixed in this file 3 weeks ago at b8b350a. Can you confirm if you have updated to get this commit on perf core? Alternately you could pull from my branch above which is up to date enough to include it.Hi James, Thanks for pointing it. Not getting build issue now.quoted
The file is in pmu-events/arch/test/ so I would expect it to fail on all platforms.quoted
make[3]: *** [pmu-events/Build:18: pmu-events/pmu-events.c] Error 1 make[3]: *** Deleting file 'pmu-events/pmu-events.c' make[2]: *** [Makefile.perf:667: pmu-events/pmu-events-in.o] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [Makefile.perf:238: sub-make] Error 2 make: *** [Makefile:70: all] Error 2 Also, Is it possible to add line number along with file name while showing this error `json error Invalid character inside JSON string`. It might make it easy to fix.I can add a character number with the following fix if you think that would be good enough? A line number might be a bigger change and involve keeping track of newline characters.Sure. I think then we can skip this change. Not sure if character number will be helpful. Patch-set looks good to me. Reviewed-by Kajol Jain[off-list ref]
Applied ok as-is to my perf/core branch, applied and added your Reviewed-by, thanks. - Arnaldo
Thanks, Kajol Jainquoted
diff --git a/tools/perf/pmu-events/json.c b/tools/perf/pmu-events/json.c index 0544398d6e2d..41a14e1543bf 100644 --- a/tools/perf/pmu-events/json.c +++ b/tools/perf/pmu-events/json.c@@ -99,7 +99,7 @@ jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len) res = jsmn_parse(&parser, *map, *size, tokens, sz / sizeof(jsmntok_t)); if (res != JSMN_SUCCESS) { - pr_err("%s: json error %s\n", fn, jsmn_strerror(res)); + pr_err("%s: json error at character %u '%s'\n", fn, parser.pos, jsmn_strerror(res)); goto error_free; } if (len)It prints this for the same error you have above> pmu-events/arch/test/test_soc/sys/uncore.json: json error at character 213 'Invalid character inside JSON string' Although funnily enough after re-introducing that extra comma it doesn't fail the build for me, it just prints the error message. But I may have noticed some dependency tracking issues around the json files. James
-- - Arnaldo