On Fri, Nov 16, 2012 at 5:24 PM, Stefan Sperling wrote:
> On Fri, Nov 16, 2012 at 03:35:12PM +0100, Stefan Fuhrmann wrote:
> > Hi Stefan,
> >
> > For some reason, this commit causes the forked process
> > executing the pre-revprop-change script to segfault under
> > certain circumstances.
>
> I don't have time to look into this right now, unfortunately :(
> Can you please file an issue with a 1.8.0 milestone? I'll get
> to it later.
>
As it turns out, your commit has only be the trigger but
not the root cause.
serf_trunk/allocator.c, serf_bucket_allocator_create(), line 147:
/* ### this implies buckets cannot cross a fork/exec. desirable?
*
* ### hmm. it probably also means that buckets cannot be AROUND
* ### during a fork/exec. the new process will try to clean them
* ### up and figure out there are unfreed blocks...
*/
apr_pool_cleanup_register(pool, allocator,
allocator_cleanup, allocator_cleanup);
Since we fork() for hooks, we can't use hooks in ra_local
while there is an open serf connection. Otherwise, we get
into trouble with pool cleanups:
==7392== Invalid read of size 8
==7392== at 0x5055694: clean_resp (outgoing.c:51)
==7392== by 0x50C65D: cleanup_pool_for_exec (apr_pools.c:2359)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x5142F6: apr_proc_create (proc.c:430)
==7392== by 0x4D24F4: svn_io_start_cmd3 (io.c:2686)
==7392== by 0x42308D: run_hook_cmd (hooks.c:249)
==7392== by 0x423BC2: svn_repos__hooks_pre_revprop_change (hooks.c:565)
==7392== by 0x421A82: svn_repos_fs_change_rev_prop4 (fs-wrap.c:351)
==7392== by 0x41B56D: svn_ra_local__change_rev_prop (ra_plugin.c:674)
==7392== Address 0x72457c8 is 13,448 bytes inside a block of size 106,496
free'd
==7392== at 0x4C2A739: free (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==7392== by 0x50D002: apr_allocator_free (apr_pools.c:425)
==7392== by 0x5057B45: allocator_cleanup (allocator.c:108)
==7392== by 0x50C65D: cleanup_pool_for_exec (apr_pools.c:2359)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x50C677: cleanup_pool_for_exec (apr_pools.c:2369)
==7392== by 0x5142F6: apr_proc_create (proc.c:430)
==7392== by 0x4D24F4: svn_io_start_cmd3 (io.c:2686)
==7392== by 0x42308D: run_hook_cmd (hooks.c:249)
==7392== by 0x423BC2: svn_repos__hooks_pre_revprop_change (hooks.c:565)
==7392== by 0x421A82: svn_repos_fs_change_rev_prop4 (fs-wrap.c:351)
So, no svnsync from http[s]:// to file:// anymore :(
Any further operations where that might bite us?
-- Stefan^2.
--
Certified & Supported Apache Subversion Downloads:
*
http://www.wandisco.com/subversion/download
*
Received on 2012-11-17 14:02:36 CET