You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Stefan Küng <to...@gmail.com> on 2009/03/23 16:38:02 UTC

Access violation in 1.6.0

Hi,

The first crash reports for TSVN 1.6.0 are coming in. There's one that's
already reported more than once:

in libsvn_wc\update_editor.c, line 2315
(function add_directory())

  /* What to do with a versioned or schedule-add dir:

	 If the UUID doesn't match the parent's, or the URL isn't a
	 child of the parent dir's URL, or the dir is unversioned in
	 the parent entry, it's an error.

	 A dir already added without history is OK.  Set add_existed
	 so that user notification is delayed until after any prop
	 conflicts have been found.

	 An existing versioned dir is an error.  In the future we may
	 relax this restriction and simply update such dirs.

	 A dir added with history is a tree conflict. */

  if (strcmp(entry->uuid, parent_entry->uuid) != 0)
	return svn_error_createf
	  (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
	   _("UUID mismatch: existing directory '%s' was checked out "
		 "from a different repository"),
	   svn_path_local_style(db->path, pool));



The string comparison results in an access violation, because
parent_entry->uuid is NULL (parent_entry points to a valid object, but
the uuid string is NULL)


I don't know *why* the uuid for the parent entry is NULL though...

Stefan

-- 
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1390738

Re: Access violation in 1.6.0

Posted by Stephen Butler <sb...@elego.de>.
Quoting Mark Phippard <ma...@gmail.com>:

> On Mon, Mar 23, 2009 at 12:38 PM, Stefan Küng <to...@gmail.com> wrote:
>
>> The first crash reports for TSVN 1.6.0 are coming in. There's one that's
>> already reported more than once:
>>
>> in libsvn_wc\update_editor.c, line 2315
>> (function add_directory())
>>
>>  /* What to do with a versioned or schedule-add dir:
>>
>>         If the UUID doesn't match the parent's, or the URL isn't a
>>         child of the parent dir's URL, or the dir is unversioned in
>>         the parent entry, it's an error.
>>
>>         A dir already added without history is OK.  Set add_existed
>>         so that user notification is delayed until after any prop
>>         conflicts have been found.
>>
>>         An existing versioned dir is an error.  In the future we may
>>         relax this restriction and simply update such dirs.
>>
>>         A dir added with history is a tree conflict. */
>>
>>  if (strcmp(entry->uuid, parent_entry->uuid) != 0)
>>        return svn_error_createf
>>          (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
>>           _("UUID mismatch: existing directory '%s' was checked out "
>>                 "from a different repository"),
>>           svn_path_local_style(db->path, pool));
>>
>>
>>
>> The string comparison results in an access violation, because
>> parent_entry->uuid is NULL (parent_entry points to a valid object, but
>> the uuid string is NULL)
>>
>>
>> I don't know *why* the uuid for the parent entry is NULL though...
>
> I run into nulls occasionally.  Not sure if they are older WC's that
> have been upgraded to new formats but I've hard to guard against it in
> Subclipse.  Same with the repository root URL.
>
> I cannot recreate this, but I swear in the past I've seen this with
> in-place imports.  Basically checkout project root, add
> trunk/tags/branches and commit.  Then add stuff to trunk and commit
> etc.  None of the stuff has the UUID set in the WC.  Like I said, I do
> not think I can recreate it now though.

Ooops, I should have read the fine manual (subversion/libsvn_wc/README)
more closely when I added the UUID sanity check.  For backward
compatibility, we shouldn't assume that the UUID has been recorded
in any directory's entries.

Fixed on trunk in r36751, nominated for backport to 1.6.x.

Steve


-- 
Stephen Butler | Software Developer
elego Software Solutions GmbH
Gustav-Meyer-Allee 25 | 13355 Berlin | Germany
fon: +49 30 2345 8696 | mobile: +49 163 25 45 015
fax: +49 30 2345 8695 | http://www.elegosoft.com
Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin
Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




Re: Access violation in 1.6.0

Posted by Mark Phippard <ma...@gmail.com>.
On Mon, Mar 23, 2009 at 12:38 PM, Stefan Küng <to...@gmail.com> wrote:

> The first crash reports for TSVN 1.6.0 are coming in. There's one that's
> already reported more than once:
>
> in libsvn_wc\update_editor.c, line 2315
> (function add_directory())
>
>  /* What to do with a versioned or schedule-add dir:
>
>         If the UUID doesn't match the parent's, or the URL isn't a
>         child of the parent dir's URL, or the dir is unversioned in
>         the parent entry, it's an error.
>
>         A dir already added without history is OK.  Set add_existed
>         so that user notification is delayed until after any prop
>         conflicts have been found.
>
>         An existing versioned dir is an error.  In the future we may
>         relax this restriction and simply update such dirs.
>
>         A dir added with history is a tree conflict. */
>
>  if (strcmp(entry->uuid, parent_entry->uuid) != 0)
>        return svn_error_createf
>          (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
>           _("UUID mismatch: existing directory '%s' was checked out "
>                 "from a different repository"),
>           svn_path_local_style(db->path, pool));
>
>
>
> The string comparison results in an access violation, because
> parent_entry->uuid is NULL (parent_entry points to a valid object, but
> the uuid string is NULL)
>
>
> I don't know *why* the uuid for the parent entry is NULL though...

I run into nulls occasionally.  Not sure if they are older WC's that
have been upgraded to new formats but I've hard to guard against it in
Subclipse.  Same with the repository root URL.

I cannot recreate this, but I swear in the past I've seen this with
in-place imports.  Basically checkout project root, add
trunk/tags/branches and commit.  Then add stuff to trunk and commit
etc.  None of the stuff has the UUID set in the WC.  Like I said, I do
not think I can recreate it now though.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1391955