trace: fix crash when exiting
Bug scenario: 1. start testpmd: $ dpdk-testpmd -l 4-6 -a 0000:7d:00.0 --trace=.* -- -i 2. quit testpmd and then observed segment fault: Bye... Segmentation fault (core dumped) The root cause is that rte_trace_save() and eal_trace_fini() access the huge pages which were cleanup by rte_eal_memory_detach(). This patch moves rte_trace_save() and eal_trace_fini() before rte_eal_memory_detach() to fix the bug. Fixes: dfbc61a2f9a6 ("mem: detach memsegs on cleanup") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng <fengchengwen@huawei.com> Tested-by: Jerin Jacob <jerinj@marvell.com> Reviewed-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
8b59472875
commit
a8f23b444d
@ -893,11 +893,11 @@ rte_eal_cleanup(void)
|
|||||||
eal_get_internal_configuration();
|
eal_get_internal_configuration();
|
||||||
rte_service_finalize();
|
rte_service_finalize();
|
||||||
rte_mp_channel_cleanup();
|
rte_mp_channel_cleanup();
|
||||||
|
rte_trace_save();
|
||||||
|
eal_trace_fini();
|
||||||
/* after this point, any DPDK pointers will become dangling */
|
/* after this point, any DPDK pointers will become dangling */
|
||||||
rte_eal_memory_detach();
|
rte_eal_memory_detach();
|
||||||
rte_eal_alarm_cleanup();
|
rte_eal_alarm_cleanup();
|
||||||
rte_trace_save();
|
|
||||||
eal_trace_fini();
|
|
||||||
eal_cleanup_config(internal_conf);
|
eal_cleanup_config(internal_conf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1266,13 +1266,13 @@ rte_eal_cleanup(void)
|
|||||||
vfio_mp_sync_cleanup();
|
vfio_mp_sync_cleanup();
|
||||||
#endif
|
#endif
|
||||||
rte_mp_channel_cleanup();
|
rte_mp_channel_cleanup();
|
||||||
|
rte_trace_save();
|
||||||
|
eal_trace_fini();
|
||||||
/* after this point, any DPDK pointers will become dangling */
|
/* after this point, any DPDK pointers will become dangling */
|
||||||
rte_eal_memory_detach();
|
rte_eal_memory_detach();
|
||||||
eal_mp_dev_hotplug_cleanup();
|
eal_mp_dev_hotplug_cleanup();
|
||||||
rte_eal_malloc_heap_cleanup();
|
rte_eal_malloc_heap_cleanup();
|
||||||
rte_eal_alarm_cleanup();
|
rte_eal_alarm_cleanup();
|
||||||
rte_trace_save();
|
|
||||||
eal_trace_fini();
|
|
||||||
eal_cleanup_config(internal_conf);
|
eal_cleanup_config(internal_conf);
|
||||||
rte_eal_log_cleanup();
|
rte_eal_log_cleanup();
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user