Buffer double free on schedule terminate introduced by 295d894a3e170f9f30261dc272182fb5eebd64b0
Signed-off-by: Nicolas Morey-Chaisemartin <[email protected]> --- This fixes an issue that can easily be reproduced by running the odp_scheduler validation test. Adding an assert allocator != ODP_FREEBUF in the odp_buffer_free function shows a double free in the odp_schedule_term_global function. From what I could gather, the issue comes from the qe cmd_ev being freed by schedule_queue_destroy, and then freed again by odp_buffer_free (as it is the command pulled from the prio queue). Running odp_buffer_free only if schedule_queue_destroy was not called fixes the issue. However I am not sure this won't cause mem leaks. platform/linux-generic/odp_schedule.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c index 7fe42d7..087ee67 100644 --- a/platform/linux-generic/odp_schedule.c +++ b/platform/linux-generic/odp_schedule.c @@ -202,9 +202,8 @@ int odp_schedule_term_global(void) if (num > 0) ODP_ERR("Queue not empty\n"); - } - - odp_buffer_free(buf); + } else + odp_buffer_free(buf); } if (odp_queue_destroy(pri_q)) { _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
