On Sat, Nov 23, 2013 at 12:21 AM, Justin Ruggles <[email protected]>wrote:
> My first suspicion is that it is an application issue since libavformat is > not meant to be multi-threaded. Are you sure about that? This is from libavcodec/avcodec.h: /** * Register a user provided lock manager supporting the operations * specified by AVLockOp. mutex points to a (void *) where the * lockmgr should store/get a pointer to a user allocated mutex. It's * NULL upon AV_LOCK_CREATE and != NULL for all other ops. * * @param cb User defined callback. Note: Libav may invoke calls to this * callback during the call to av_lockmgr_register(). * Thus, the application must be prepared to handle that. * If cb is set to NULL the lockmgr will be unregistered. * Also note that during unregistration the previously registered * lockmgr callback may also be invoked. */ int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); Granted, this is from libavcodec, not libavformat. But I don't see why not to support multi-threaded use. Arguably it's better design to not have global state regardless. > That said, it would be good to have some code example that can reproduce > the issue. > I'm working on it. Currently I am able to reliably trigger the bug, but it requires me to spawn 6 different instances of an application running forever in a bash while loop for about 60 seconds. > > For FPEs in general, just trace back the 0 as far as it takes. > I'll see what I can do. Thanks. _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
