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 >