[prev in list] [next in list] [prev in thread] [next in thread] 

List:       subversion-dev
Subject:    Re: Subversion 1.6.5: segmentation fault on update
From:       Stefan Sperling <stsp () elego ! de>
Date:       2009-09-29 15:46:58
Message-ID: 20090929154658.GG19570 () jack ! stsp ! name
[Download RAW message or body]

On Tue, Sep 29, 2009 at 03:17:23PM +0100, Stefan Sperling wrote:
> On Tue, Sep 29, 2009 at 03:51:38PM +0200, Alexander Kitaev wrote:
> > Hello,
> > 
> > Attached script fails with Subversion 1.6.5. It performs update that
> > adds new file in place of a directory that is scheduled for addition and
> > missing.
> 
> Thanks, I can reproduce with 1.6.x and will try to fix this.

You have found 2 bugs.

1) One is that we dereferenced fields which may legally be NULL
   without checking for NULL...

2) The other is that we do not check WC meta data for existing directories
   when adding files. We only check the disk.

With the patch below which fixes 1) (already committed to trunk in r39673)
I can get 1.6.x to exhibit the following behaviour after running your script.

svn: Failed to load properties from disk
svn: Directory 'wc/dir/file.txt' is missing                                     
svn: Directory 'wc/dir/file.txt' is missing
$ svn st wc
!       wc
!       wc/dir
A       wc/dir/file.txt
$ svn revert -R wc
Reverted 'wc/dir/file.txt'
$ svn st wc
!       wc
!       wc/dir
?       wc/dir/file.txt
$ svn up wc
svn: Failed to add file 'wc/dir/file.txt': an unversioned file of the same name 
already exists
$ svn st wc
!       wc
!       wc/dir
?       wc/dir/file.txt
$ rm wc/dir/file.txt                                               
$ svn up wc
A    wc/dir/file.txt
Updated to revision 2.
$ svn st wc
$ 

We may want to tweak this further. Trunk has similar behaviour.

Stefan


Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c	(revision 39674)
+++ subversion/libsvn_wc/update_editor.c	(working copy)
@@ -3518,7 +3518,7 @@
              "from a different repository"),
            svn_path_local_style(full_path, pool));
 
-      if (!eb->switch_url
+      if (!eb->switch_url && fb->new_URL && entry->url
           && strcmp(fb->new_URL, entry->url) != 0)
         return svn_error_createf(
            SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2401684
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic