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
>