Hello Min, > -----Original Message----- > From: zhoumin <zhou...@loongson.cn> > Sent: Wednesday, November 30, 2022 9:33 AM > To: Tomasz Duszynski <tduszyn...@marvell.com>; dev@dpdk.org > Cc: tho...@monjalon.net; Jerin Jacob Kollanukkaran <jer...@marvell.com> > Subject: [EXT] Re: [PATCH v3 1/4] eal: add generic support for reading PMU > events > > External Email > > ---------------------------------------------------------------------- > Hi Tomasz, >
[...] > > +void > > +eal_pmu_fini(void) > > +{ > > + struct rte_pmu_event *event, *tmp; > > + int lcore_id; > > + > > + RTE_TAILQ_FOREACH_SAFE(event, &rte_pmu->event_list, next, tmp) { > > + TAILQ_REMOVE(&rte_pmu->event_list, event, next); > > + free(event->name); > > + rte_free(event); > > + } > > + > > + RTE_LCORE_FOREACH_WORKER(lcore_id) > > + cleanup_events(lcore_id); > > + > > + pmu_arch_fini(); > > + free(rte_pmu->name); > > + rte_free(rte_pmu); > > +} > > There may be some problems with the implementation of eal_pmu_fini(), but I'm > not sure. > > I checked some test reports for this series. It seems that the test case of > `debug_autotest` in > > the DPDK unit test has an issue when the child process in this test case > calls the function > of rte_exit(). > > The call chain is as follows: > > test_debug() -> test_exit() -> test_exit_val() -> rte_exit() -> > rte_eal_cleanup() -> eal_pmu_fini(). > > The issue may be related to memory free from the error message as follows: > > test_exit_valEAL: Error: Invalid memory > EAL: Error - exiting with code: 1 > Cause: test_exit_valEAL: Error: Invalid memory > EAL: Error - exiting with code: 2 > Cause: test_exit_valEAL: Error: Invalid memory > EAL: Error - exiting with code: 255 > Cause: test_exit_valEAL: Error: Invalid memory > EAL: Error - exiting with code: -1 > Cause: test_exit_valEAL: Error: Invalid memory > > The above error message will disappear when I comment out the calling to the > eal_pmu_fini() in > > the rte_eal_cleanup(). > Thanks for pointing this out. This was apparently happening due to freeing same hugepage memory in forked process multiple times.