Ping On 06/15/2015 03:30 PM, Nicolas Morey-Chaisemartin wrote: > 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
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
