Blair Zajac wrote on Sun, Jan 09, 2011 at 12:09:34 -0800:
> Wanted to confirm a reading of fs_serialized_init() in libsvn_fs_fs/fs.c 
> in a persistent, multithreaded server.
>
> It appears that if fs_serialized_init() is called at the same time by two 
> or more threads,

Can this happen?

fs_serialized_init() is called from a number of places; checking the
first two --- fs_open() and fs_create() --- I see that
libsvn_fs/fs-loader.c grabs a mutex before calling the
fs_library_vtable_t->{create,open_fs}() functions.

I didn't check the other callers.

> then you would have a race on apr_pool_userdata_get() 
> and apr_pool_userdata_set().
>
> It looks like a good fix for this would be to have svn_fs_initialize() 
> call down into the fs implementation library to set this up?  Would that 
> be a good solution to this?  It would need to call into all fs 
> implementation libraries though, loading a .so that may never be used.
>
> Blair
>

Reply via email to