On Sat, Dec 26, 2009 at 11:24 AM, Stefan Sperling <[email protected]> wrote:
> On Wed, Dec 23, 2009 at 09:35:23AM -0600, Hyrum K. Wright wrote:
>> Please be sure to test the bindings.
>
> Also, a ruby bindings test segfaults.
>
> I've found this in an OpenBSD ports build, hence no debug symbols
> in this trace. I can rebuild it with debug symbols if required.
>
> Trace:
>
> (gdb) bt
> #0  0x007f64b5 in kill () from /usr/lib/libc.so.53.0
> #1  0x0084365b in abort () at /usr/src/lib/libc/stdlib/abort.c:68
> #2  0x049a0e22 in rb_bug () from /usr/local/lib/libruby.so.2.0
> #3  0x049ff537 in sigsegv () from /usr/local/lib/libruby.so.2.0
> #4  <signal handler called>
> #5  0x074077ec in svn_path_join () from /usr/local/lib/libsvn_subr-1.so.1.2

On trunk resolve_conflict_on_entry is only called once for these
resolve tests.  On branch it is called three times, the first two with
an apparently blank/empty svn_wc_entry_t.  The following causes the
tests to not segfault, but is only provided with the hope of  helping
some expert figure out the proper fix.

Index: subversion/libsvn_wc/adm_ops.c
===================================================================
--- subversion/libsvn_wc/adm_ops.c      (revision 894204)
+++ subversion/libsvn_wc/adm_ops.c      (working copy)
@@ -2739,6 +2739,10 @@
   apr_uint64_t modify_flags = 0;
   svn_wc_entry_t *entry = svn_wc_entry_dup(orig_entry, pool);

+  /* if we there is nothing to try to resolve, just skip it all */
+  if (strcmp(entry->name, "") == 0)
+    return SVN_NO_ERROR;
+
   if (resolve_text)
     {
       const char *auto_resolve_src;



--
Joe

> #6  0x04ce68cd in resolve_conflict_on_entry ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #7  0x04ce6d6b in resolve_found_entry_callback ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #8  0x04cf17ee in visit_tc_too_found_entry ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #9  0x04cf1474 in walker_helper () from /usr/local/lib/libsvn_wc-1.so.1.2
> #10 0x04cf175d in svn_wc_walk_entries3 ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #11 0x04cf1ab7 in svn_wc__walk_entries_and_tc ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #12 0x04ce6ffc in svn_wc_resolved_conflict4 ()
>   from /usr/local/lib/libsvn_wc-1.so.1.2
> #13 0x09a4bcdb in svn_client_resolve ()
>   from /usr/local/lib/libsvn_client-1.so.1.2
> #14 0x02ab5f6d in _wrap_svn_client_resolve ()
>   from 
> /usr/ports/pobj/subversion-1.6.7/subversion-1.6.7/subversion/bindings/sw
> ig/ruby/.ext/svn/ext/client.so
>
> We have not had a release in a while with no bindings test failures.
> Should we practice self-discipline by not allowing ourselves to release
> 1.6.7 with test failures in the bindings?
>
> By the way, the ruby bindings tests don't run in a 1.6.x working copy
> checked out with a trunk client :(
> Almost every test fails as follows:
>  11) Error:
> test_checkout(SvnClientTest):
> Svn::Error::WcUnsupportedFormat: subversion/libsvn_wc/questions.c:65: 
> Svn::Error
> ::WcUnsupportedFormat: The path 'wc-tmp/wc' appears to be part of a 
> Subversion 1
> .7 or greater
> working copy rooted at 
> '/home/stsp/svn/svn-1.6.x/subversion/bindings/swig/ruby/t
> est'.
>
> This problem is easily worked around, but running tests should really
> "just work".
>
> Stefan
>

Reply via email to