Hi Thomas (kugel),

Am Sonntag, 15. Februar 2015, 23:45:48 schrieb Thomas Martitz:
> The below commit isn't necessary.
> 
> buflib buffers can be passed to yielding functions just fine. Problems
> only arise if the are concurrent allocations, for example if two threads
> allocate from the same context simultaneously or if the callee does it's
> own allocations. This can't happen in the pictureflow case, it has it's
> own context and a single thread allocating from it.
> 
> Therefore the problem isn't yield() itself, but possible concurrent
> buflib_alloc() calls that result from the thread switch. This is because
> compaction only ever happens on allocation (and not in a backgroud
> thread or so).
> 
> Best regards.
> 
> 
> commit 9076b433d18b5db1a1987fe99ca7c70808f22b0e
> Author: Thomas Jarosch <t...@simonv.com>
> Date:   Thu Jan 1 23:45:24 2015 +0100
> 
>      PictureFlow: Add move callback for buflib allocations
> 
>      If we don't provide a callback to buflib_alloc(),
>      the buffer is always movable (to reduce fragmentation).
> 
>      Since we pass our buffer to functions that call yield(),
>      this could lead to memory corruption on buflib compaction.
> 
>      Change-Id: Id1fad1822479d692551c55cb8bc87cea7b78f759

thanks for the review. I noticed the same thing a few days after
committing it. It occupied my mind why it wasn't crashing before ;)
Do you think we should revert it or keep it? It won't hurt I guess.

Did you have a chance to look at the other buflib changes I did?
They should be correct IMHO.

Cheers,
Thomas

Reply via email to