subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Nieder <jrnie...@gmail.com>
Subject [1.7.x] "svn update" tripping assertion when replacing executable by symlink (Re: [bug?] perl bindings: SVN::Ra->new trips assertion when file:// URL contains a space)
Date Sun, 01 Jan 2012 22:31:14 GMT
Stefan Sperling wrote:
> On Sat, Dec 17, 2011 at 03:40:03AM -0600, Jonathan Nieder wrote:

>> 	svn: E235000: In file '/home/jrn/src/subversion/subversion/libsvn_wc/update_editor.c'
line 1582: assertion failed (action == svn_wc_conflict_action_edit || action == svn_wc_conflict_action_delete
|| action == svn_wc_conflict_action_replace)
>> 	Aborted (core dumped)
>> 
>
> That looks like the symlink update bug fixed in 1.7.2
>
> Version 1.7.2
> (02 Dec 2011, from /branches/1.7.x)
> http://svn.apache.org/repos/asf/subversion/tags/1.7.2
>    [...]
>    * fix an assertion failure when a symlink is updated (r1186944, -81, -83)

That sounds right.  Unfortunately, I can reproduce it with
branches/1.7.x@1226297.

Some details:

The action is _add.  The test script ran "svn update" after a
typechange (executable -> symlink) for a file named exec.sh.  reason
is _replaced.  The base status is _normal.

"svn log -v" reveals that /exec.sh is already present and already
known to be a symlink.  However, the working copy is not up-to-date
--- the working copy of the file is still an executable.

Call chain:

    main -> svn_client_update4 -> svn_client__update_internal -> update_internal
->
     svn_wc_crawl_revisions -> svn_repos_finish_report -> finish_report ->
     reporter.c::drive -> delta_dirs -> update_entry ->
     update_editor.c::close_file -> check_tree_conflict

More precisely, this is the "local_is_link != incoming_is_link" case
in close_file().

In trunk after r1187692, it's gone.  Instead of calling
check_tree_conflict(), that code path calls create_tree_conflict(),
avoiding trouble.

Thanks and hope that helps,
Jonathan

Mime
View raw message