diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-03-17 18:36:16 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-03-18 19:19:22 +0100 |
commit | cea3a63ba3d89d8403eef008f7a7c54d645cff70 (patch) | |
tree | 3b2e553d6edec8c8ea3fbf1e3546231d3b3e34a2 /libavutil/buffer_internal.h | |
parent | 73ef12757b9471474bfebda20792448e9bc4e3cc (diff) | |
download | ffmpeg-cea3a63ba3d89d8403eef008f7a7c54d645cff70.tar.gz |
avutil/buffer: Fix race in pool.
This race will always happen sooner or later in a multi-threaded
environment and it will over time lead to OOM.
This fix works by spinning, there are other ways by which this
can be fixed, like simply detecting the issue after it happened
and freeing the over-allocated memory or simply using a mutex.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/buffer_internal.h')
-rw-r--r-- | libavutil/buffer_internal.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libavutil/buffer_internal.h b/libavutil/buffer_internal.h index b2602f8809..c29190839e 100644 --- a/libavutil/buffer_internal.h +++ b/libavutil/buffer_internal.h @@ -85,6 +85,8 @@ struct AVBufferPool { */ volatile int refcount; + volatile int nb_allocated; + int size; AVBufferRef* (*alloc)(int size); }; |