On Fri, Oct 26, 2012 at 11:34 AM, Philip Martin
<philip.mar...@wandisco.com> wrote:
> Philip Martin <philip.mar...@wandisco.com> writes:
>
>>> ==15116== Source and destination overlap in memcpy(0x9e3f078, 0x98aca80, 
>>> 160094512)
>>> ==15116==    at 0x4C25F6A: memcpy (mc_replace_strmem.c:497)
>>> ==15116==    by 0x5A25229: svn_string_ncreate (string.c:165)
>>> ==15116==    by 0x5A2541B: svn_string_dup (string.c:224)
>>> ==15116==    by 0x5A1650C: svn_prop_diffs (properties.c:225)
>>> ==15116==    by 0x513DE67: set_props_txn (wc_db.c:5139)
>>> ==15116==    by 0x515F337: run_txn (wc_db_util.c:188)
>>> ==15116==    by 0x5A1F9FA: svn_sqlite__with_lock (sqlite.c:1073)
>>> ==15116==    by 0x515F3AD: svn_wc__db_with_txn (wc_db_util.c:210)
>>> ==15116==    by 0x513E17A: svn_wc__db_op_set_props (wc_db.c:5189)
>>> ==15116==    by 0x510DB3C: do_propset (props.c:1941)
>>> ==15116==    by 0x510E15D: svn_wc_prop_set4 (props.c:2073)
>>> ==15116==    by 0x4E3AAB2: add_file (add.c:327)
>>> ==15116==
>>
>> I assume this is the problem and that copying overlapping memory is
>> causing corruption to the pools and/or the malloc structures:
>
> This makes the test PASS:
>
> Index: ../src/subversion/libsvn_client/add.c
> ===================================================================
> --- ../src/subversion/libsvn_client/add.c       (revision 1401908)
> +++ ../src/subversion/libsvn_client/add.c       (working copy)
> @@ -146,8 +146,8 @@
>                             const char *filename,
>                             const char *pattern,
>                             apr_hash_t *propvals,
> -                           apr_pool_t *scratch_pool,
> -                           apr_pool_t *result_pool)
> +                           apr_pool_t *result_pool,
> +                           apr_pool_t *scratch_pool)

Gah, thanks for finding that Philip.  I owe you a drink of your choice.

>  {
>    apr_hash_index_t *hi;
>
> @@ -163,7 +163,7 @@
>        const char *propname = svn__apr_hash_index_key(hi);
>        const char *propval = svn__apr_hash_index_val(hi);
>        svn_string_t *propval_str = apr_palloc(result_pool,
> -                                             sizeof(*propval));
> +                                             sizeof(*propval_str));
>        propval_str->data = propval;
>        propval_str->len = strlen(propval);
>
> @@ -187,7 +187,7 @@
>                                   apr_pool_t *scratch_pool)
>  {
>    apr_hash_index_t *hi;
> -  svn_boolean_t have_executable;
> +  svn_boolean_t have_executable = FALSE;
>
>    *properties = apr_hash_make(result_pool);
>    *mimetype = NULL;
>
>
> --
> Join us this October at Subversion Live 2012
> http://www.wandisco.com/svn-live-2012



-- 
Paul T. Burba
CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development
Skype: ptburba

Reply via email to