Philip Martin <philip.mar...@wandisco.com> writes: > The problem is that the shared struct created in fs_serialized_init > doesn't live long enough: > > ==25549== Invalid read of size 8 > ==25549== at 0x8102166: init_lock_baton (fs_fs.c:265) > ==25549== by 0x81022D4: create_lock_baton (fs_fs.c:317) > ==25549== by 0x81023B6: svn_fs_fs__with_write_lock (fs_fs.c:365) > ==25549== by 0x8106366: svn_fs_fs__change_rev_prop (fs_fs.c:2144) > ==25549== by 0x7CE00EF: svn_fs_change_rev_prop2 (fs-loader.c:1577) > ==25549== by 0x7AA8CC2: svn_repos_fs_change_rev_prop4 (fs-wrap.c:404) > ==25549== by 0x7887C7C: svn_ra_local__change_rev_prop (ra_plugin.c:750) > ==25549== by 0x4E3DC5D: svn_ra_change_rev_prop2 (ra_loader.c:576) > ==25549== by 0x4E409EE: svn_ra__get_operational_lock (util.c:250) > ==25549== by 0x402A60: get_lock (svnsync.c:399) > ==25549== by 0x402AEA: with_locked (svnsync.c:457) > ==25549== by 0x403C7C: initialize_cmd (svnsync.c:909) > ==25549== Address 0x74be778 is 24 bytes inside a block of size 56 free'd > ==25549== at 0x4C29E90: free (vg_replace_malloc.c:473) > ==25549== by 0x55C7096: pool_clear_debug (apr_pools.c:1576) > ==25549== by 0x55C71EA: pool_destroy_debug (apr_pools.c:1638) > ==25549== by 0x55C6FAA: pool_clear_debug (apr_pools.c:1550) > ==25549== by 0x55C71EA: pool_destroy_debug (apr_pools.c:1638) > ==25549== by 0x55C72D3: apr_pool_destroy_debug (apr_pools.c:1680) > ==25549== by 0x4E3D696: svn_ra_open4 (ra_loader.c:431) > ==25549== by 0x403F57: open_target_session (svnsync.c:996) > ==25549== by 0x403BE6: initialize_cmd (svnsync.c:905) > ==25549== by 0x407384: sub_main (svnsync.c:2380) > ==25549== by 0x407463: main (svnsync.c:2414) > > This is with 1.9.x.
This worked in 1.8 and the breaking change is r1667829: Merge the r1664078 group from trunk: * r1664078,r1664080,r1664187,r1664191,r1664200,r1664344,r1664588,r1664927,r1665886 Instead of making more changes to the auth batons from ra sessions, reduce the number of changes by introducing an internal slave auth baton feature. Justification: Without this patch (or a complete redesign of the auth layer), the ra sessions cache (currently on a feature branch), will open the ra sessions from outside configuration changes caused by opening other ra sessions. This patch not only reverts the additional changes to the auth baton on init that are new in 1.9, but also removes cases where we already applied similar changes inside specific ra providers. Notes: The reason I group this under release blockers, is to avoid the behavior change introduced in r1609499 from reaching released versions. The changes itself are safe for a later backport as it only affects ra-session internal state. Votes: +1: rhuijben, brane, philip in particular passing scratch_pool to the RA initfunc. Reverting to passing the parent sesspool like 1.8: Index: ../src-1.9/subversion/libsvn_ra/ra_loader.c =================================================================== --- ../src-1.9/subversion/libsvn_ra/ra_loader.c (revision 1677108) +++ ../src-1.9/subversion/libsvn_ra/ra_loader.c (working copy) @@ -355,7 +355,7 @@ svn_error_t *svn_ra_open4(svn_ra_session_t **sessi /* Library not found. */ continue; - SVN_ERR(initfunc(svn_ra_version(), &vtable, scratch_pool)); + SVN_ERR(initfunc(svn_ra_version(), &vtable, sesspool)); SVN_ERR(check_ra_version(vtable->get_version(), scheme)); allows the initialize to work again. -- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*