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
>