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

Re: segmentation fault with --parents option

From: Karl Fogel <kfogel_at_red-bean.com>
Date: Thu, 09 Oct 2008 13:50:29 -0400

Matthias Hoertzsch <m.hoertzsch_at_t-online.de> writes:
> thank you for the script. I used it for the creation, import and copy and it
> shows the
> same behavior as in my posting:

Wait -- you mean my script reproduces the problem for you, but not for
me? Using the exact same script... Oh, hmmm, I wonder if this change
(by me!) is about this bug:

   ------------------------------------------------------------------------
   r31314 | kfogel | 2008-05-20 14:08:11 -0400 (Tue, 20 May 2008) | 12 lines
   
   Fix bug whereby 'svn cp --parents URL/TO/EXISTING/FILE URL/TO/EXISTING/DIR'
   would seg fault. This follows up to the regression test added in r31311.
   
   Found by: Alexander Kitaev <alex_at_tmate.org>
   
   * subversion/libsvn_client/copy.c
     (repos_to_repos_copy): Specially handle the case where dir is an
       immediate child of top_url.
   
   * subversion/tests/cmdline/copy_tests.py
     (test_list): Expect 'unneeded_parents' to pass now.

If so, then you should not be able to reproduce this bug with latest
trunk Subversion. Can you try that?

-Karl

> copy without --parents works fine, while --parents gives again:
>
> 7379 Segmentation fault (core dumped) ${SVN} copy --parents
> ${URL}/branches/a_branch ${URL}/branches/b_branch -m "CORE-1000: create
> branch with --parents."
>
> and the apport.log on the machine shows only:
>
> called for pid 7379, signal 11
>
> I tested this again for both machines, one with 1.5.0 debian and 1.5.2 on
> ubuntu 7.10 .
> Also it does not matter if the repository is completely new created and
> empty or an
> already existing one.
>
> Regards,
>
> Matthias
>
>
> Karl Fogel-2 wrote:
>>
>> Matthias Hoertzsch <m.hoertzsch_at_t-online.de> writes:
>>> Hello,
>>>
>>> while using the svn copy command I encountered an error:
>>>
>>> svn copy --parents http://svnhost/repo/branches/a_branch
>>> http://svnhost/repo/branches/b_branch -m "copy branch"
>>>
>>> gives a segmentation fault while:
>>>
>>> svn copy http://svnhost/repo/branches/a_branch
>>> http://svnhost/repo/branches/b_branch -m "copy branch"
>>>
>>> works perfect
>>>
>>> The same fault occurs for:
>>>
>>> svn copy --parents http://svnhost/repo/branches/a_branch/subdir
>>> http://svnhost/repo/branches/b_branch -m "copy branch"
>>>
>>> while:
>>>
>>> svn copy --parents http://svnhost/repo/branches/a_branch/subdir
>>> http://svnhost/repo/branches/b_branch/subdir -m "copy branch"
>>>
>>> works fine again.
>>
>> I cannot reproduce this with r33554 of trunk Subversion, using the
>> script below. Can you use this to make a script that reproduces the bug
>> reliably for you? Thanks.
>>
>> -Karl
>>
>> --------------------------------------------------------------------------
>> #!/bin/sh
>>
>> # The next line is the only line you should need to adjust.
>> SVNDIR=/home/kfogel/src/subversion
>>
>> SVN=${SVNDIR}/subversion/svn/svn
>> SVNSERVE=${SVNDIR}/subversion/svnserve/svnserve
>> SVNADMIN=${SVNDIR}/subversion/svnadmin/svnadmin
>>
>> # Select an access method. If svn://, the svnserve setup is
>> # handled automagically by this script; but if http://, then
>> # you'll have to configure it yourself first.
>> #
>> URL=http://localhost/mh/repos
>> # URL=svn://localhost/repos
>> # URL=file:///`pwd`/repos
>>
>> rm -rf repos wc import-me
>>
>> ${SVNADMIN} create repos
>>
>> # These are for svnserve only.
>> echo "[general]" > repos/conf/svnserve.conf
>> echo "anon-access = write" >> repos/conf/svnserve.conf
>> echo "auth-access = write" >> repos/conf/svnserve.conf
>>
>> # The server will only be contacted if $URL is svn://foo, of course.
>> ${SVNSERVE} --pid-file svnserve-pid -d -r `pwd`
>> # And put the kill command in a file, in case need to run it manually.
>> echo "kill -9 `cat svnserve-pid`" > k
>> chmod a+rwx k
>>
>> echo "### Making a Greek Tree for import..."
>> mkdir import-me
>> mkdir import-me/trunk
>> mkdir import-me/tags
>> mkdir import-me/branches
>> mkdir import-me/trunk/A
>> mkdir import-me/trunk/A/B/
>> mkdir import-me/trunk/A/C/
>> mkdir import-me/trunk/A/D/
>> mkdir import-me/trunk/A/B/E/
>> mkdir import-me/trunk/A/B/F/
>> mkdir import-me/trunk/A/D/G/
>> mkdir import-me/trunk/A/D/H/
>> echo "This is the file 'iota'." > import-me/trunk/iota
>> echo "This is the file 'A/mu'." > import-me/trunk/A/mu
>> echo "This is the file 'A/B/lambda'." > import-me/trunk/A/B/lambda
>> echo "This is the file 'A/B/E/alpha'." > import-me/trunk/A/B/E/alpha
>> echo "This is the file 'A/B/E/beta'." > import-me/trunk/A/B/E/beta
>> echo "This is the file 'A/D/gamma'." > import-me/trunk/A/D/gamma
>> echo "This is the file 'A/D/G/pi'." > import-me/trunk/A/D/G/pi
>> echo "This is the file 'A/D/G/rho'." > import-me/trunk/A/D/G/rho
>> echo "This is the file 'A/D/G/tau'." > import-me/trunk/A/D/G/tau
>> echo "This is the file 'A/D/H/chi'." > import-me/trunk/A/D/H/chi
>> echo "This is the file 'A/D/H/omega'." > import-me/trunk/A/D/H/omega
>> echo "This is the file 'A/D/H/psi'." > import-me/trunk/A/D/H/psi
>> echo "### Done."
>> echo ""
>> echo "### Importing it..."
>> (cd import-me; ${SVN} import -q -m "Initial import." ${URL})
>> echo "### Done."
>> echo ""
>>
>> ${SVN} copy -q -m "create branch" ${URL}/trunk ${URL}/branches/a_branch
>>
>> ${SVN} copy --parents ${URL}/branches/a_branch ${URL}/branches/b_branch \
>> -m "copy branch"
>>
>> ./k
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
>> For additional commands, e-mail: users-help_at_subversion.tigris.org
>>
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-10-09 19:50:55 CEST

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.