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

Reply via email to