[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Crash in libsvn_wc/copy.c

From: Garrett Rooney <rooneg_at_electricjellyfish.net>
Date: 2006-08-29 15:44:48 CEST

On 8/28/06, mal content <artifact.one@googlemail.com> wrote:
> SVN has been running flawlessly for nearly six months and
> suddenly I'm hit by a lot of problems in a few days. Isn't that
> always the way?
>
> Anyway, I did this:
>
> $ for f in alphatab*.c
> do
> g=`echo $f | awk -F_ '{print $2}'`;
> svn mv $f at_$g;
> done
>
> Basically just a batch rename, I was surprised to see this:
>
> A at_add.c
> D alphatab_add.c
> Segmentation fault: 11 (core dumped)
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
>
> Given the problems I've had with things over the past few days, I was
> dreading what I might see. Thankfully, svn cleanup handled it well and
> nothing in the working copy was damaged.
>
> Anyway, here's a backtrace:
>
> Reading symbols from /usr/local/lib/libsvn_client-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_client-1.so.0
> Reading symbols from /usr/local/lib/libsvn_wc-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_wc-1.so.0
> Reading symbols from /usr/local/lib/libsvn_ra-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_ra-1.so.0
> Reading symbols from /usr/local/lib/libsvn_diff-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_diff-1.so.0
> Reading symbols from /usr/local/lib/libsvn_ra_local-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_ra_local-1.so.0
> Reading symbols from /usr/local/lib/libsvn_repos-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_repos-1.so.0
> Reading symbols from /usr/local/lib/libsvn_fs-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_fs-1.so.0
> Reading symbols from /usr/local/lib/libsvn_fs_fs-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_fs_fs-1.so.0
> Reading symbols from /usr/local/lib/libsvn_fs_base-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_fs_base-1.so.0
> Reading symbols from /usr/local/lib/libsvn_ra_svn-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_ra_svn-1.so.0
> Reading symbols from /usr/local/lib/libsvn_ra_dav-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_ra_dav-1.so.0
> Reading symbols from /usr/local/lib/libsvn_delta-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_delta-1.so.0
> Reading symbols from /usr/local/lib/libsvn_subr-1.so.0...done.
> Loaded symbols for /usr/local/lib/libsvn_subr-1.so.0
> Reading symbols from /usr/local/lib/libaprutil-1.so.2...done.
> Loaded symbols for /usr/local/lib/libaprutil-1.so.2
> Reading symbols from /usr/local/lib/libdb-4.2.so.2...done.
> Loaded symbols for /usr/local/lib/libdb-4.2.so.2
> Reading symbols from /usr/local/lib/libapr-1.so.2...done.
> Loaded symbols for /usr/local/lib/libapr-1.so.2
> Reading symbols from /usr/lib/libthr.so.2...done.
> Loaded symbols for /usr/lib/libthr.so.2
> Reading symbols from /usr/local/lib/libneon.so.25...done.
> Loaded symbols for /usr/local/lib/libneon.so.25
> Reading symbols from /usr/lib/libssl.so.4...done.
> Loaded symbols for /usr/lib/libssl.so.4
> Reading symbols from /lib/libz.so.3...done.
> Loaded symbols for /lib/libz.so.3
> Reading symbols from /usr/lib/libgssapi.so.8...done.
> Loaded symbols for /usr/lib/libgssapi.so.8
> Reading symbols from /usr/lib/libkrb5.so.8...done.
> Loaded symbols for /usr/lib/libkrb5.so.8
> Reading symbols from /usr/lib/libasn1.so.8...done.
> Loaded symbols for /usr/lib/libasn1.so.8
> Reading symbols from /lib/libcrypto.so.4...done.
> Loaded symbols for /lib/libcrypto.so.4
> Reading symbols from /usr/lib/libroken.so.8...done.
> Loaded symbols for /usr/lib/libroken.so.8
> Reading symbols from /lib/libcrypt.so.3...done.
> Loaded symbols for /lib/libcrypt.so.3
> Reading symbols from /usr/lib/libcom_err.so.3...done.
> Loaded symbols for /usr/lib/libcom_err.so.3
> Reading symbols from /usr/local/lib/libexpat.so.6...done.
> Loaded symbols for /usr/local/lib/libexpat.so.6
> Reading symbols from /usr/local/lib/libintl.so.6...done.
> Loaded symbols for /usr/local/lib/libintl.so.6
> Reading symbols from /usr/local/lib/libiconv.so.3...done.
> Loaded symbols for /usr/local/lib/libiconv.so.3
> Reading symbols from /lib/libc.so.6...done.
> Loaded symbols for /lib/libc.so.6
> Reading symbols from /libexec/ld-elf.so.1...done.
> Loaded symbols for /libexec/ld-elf.so.1
> #0 0x280c24a1 in svn_wc_copy2 (src_path=0x8070ed8 "alphatab_del.c",
> dst_parent=0x8071140, dst_basename=0x8071068 "at_del.c",
> cancel_func=0x804f8f0 <svn_cl__check_cancel>, cancel_baton=0x0,
> notify_func=0x8051244 <notify>, notify_baton=0x8070f98, pool=0x8070018)
> at subversion/libsvn_wc/copy.c:527
> 527 subversion/libsvn_wc/copy.c: No such file or directory.
> in subversion/libsvn_wc/copy.c
> [New Thread 0x8061000 (LWP 100112)]
> (gdb) bt
> #0 0x280c24a1 in svn_wc_copy2 (src_path=0x8070ed8 "alphatab_del.c",
> dst_parent=0x8071140, dst_basename=0x8071068 "at_del.c",
> cancel_func=0x804f8f0 <svn_cl__check_cancel>, cancel_baton=0x0,
> notify_func=0x8051244 <notify>, notify_baton=0x8070f98, pool=0x8070018)
> at subversion/libsvn_wc/copy.c:527
> #1 0x280a4c83 in setup_copy (commit_info_p=0xbfbfe874,
> src_path=0x8070ed8 "alphatab_del.c", src_revision=0xbfbfe820,
> dst_path=0x8070f78 "at_del.c", is_move=1, force=1, ctx=0x8070508,
> pool=0x8070018) at subversion/libsvn_client/copy.c:158
> #2 0x280a57f8 in svn_client_move3 (commit_info_p=0xbfbfe874,
> src_path=0xbfbfe660 "", dst_path=0x8070f78 "at_del.c", force=1,
> ctx=0x8070508, pool=0x8070018) at subversion/libsvn_client/copy.c:1165
> #3 0x080511ec in svn_cl__move (os=0x8070130, baton=0x0, pool=0x8070018)
> at subversion/clients/cmdline/move-cmd.c:72
> #4 0x0805062a in main (argc=134543572, argv=0xbfbfeaa4)
> at subversion/clients/cmdline/main.c:1476
>
> OS is FreeBSD 6.1-RELEASE.
> SVN is version 1.3.0 installed from ports:
>
> http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/subversion/
>
> (they do apply a couple of small patches, but nothing that touches
> libsvn_wc).
>
> I'll provide any more info necessary.

It looks like your bug may have already been fixed. Can you try with
a new version of Subversion? In 1.3.0 line 527 of libsvn_wc/copy.c
looks like this:

  if ((src_entry->repos != NULL && dst_entry->repos != NULL) &&
      strcmp (src_entry->repos, dst_entry->repos) != 0)
    return svn_error_createf
      (SVN_ERR_WC_INVALID_SCHEDULE, NULL,
       _("Cannot copy to '%s', as it is not from repository '%s'; "
         "it is from '%s'"),
       svn_path_local_style (svn_wc_adm_access_path (dst_parent), pool),
       src_entry->repos, dst_entry->repos);

In newer versions (even on the 1.3.x branch) we check that src_entry
is non-NULL before we dereference it, which should avoid the crash.

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Aug 29 15:48:12 2006

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.