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

Re: Error report: wc_db.c line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Wed, 5 Sep 2018 16:43:48 +0200

On Thu, Aug 23, 2018 at 8:53 PM Nathan Hartman <hartman.nathan_at_gmail.com> wrote:
> On Thu, Aug 23, 2018 at 9:46 AM Christoph Hannebauer <Christoph.Hannebauer_at_glueckkanja.com> wrote:
>> I have not subscribed to the users mailing list, so please CC me in this thread.
>>
>> My SVN crashed with this error message:
>> 'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
>> line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
>>
>> What I did before the crash, was execute the following command:
>> svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c++/WindowsServer2008R2
>>
>> I didn’t check whether other machines also show this behavior, but I did check that TortoiseSVN 1.9.7 is also affected.
>
> Interesting. There is another thread about an assertion failure, also in a call to SVN_IS_VALID_REVNUM(), but in a different file. Could these be related?

No, it seems not. I believe this is a bug in GitHub's emulation of the
subversion protocol.

First, when I try to checkout a parent directory higher up, it works fine:
    svn checkout
https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit

As soon as you add the "c++" to the checkout path, it crashes:
[[[
svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c++
svn: E235000: In file
'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
]]]

URL-encoding the '+' signs doesn't help by the way:
[[[
svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c%2B%2B/
svn: E235000: In file
'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
]]]

But if I try the same with a regular SVN repository, there is no problem:
[[[
C:\Temp\svntest>svnadmin create repos

C:\Temp\svntest>svn mkdir -mm --parents
"file:///C:/Temp/svntest/repos/trunk/c++/WindowsServer2008R2"
Committing transaction...
Committed revision 1.

C:\Temp\svntest>svn ls file:///C:/Temp/svntest/repos/trunk
c++/

C:\Temp\svntest>svn ls file:///C:/Temp/svntest/repos/trunk/c++
WindowsServer2008R2/

C:\Temp\svntest>svn co file:///C:/Temp/svntest/repos/trunk/c++
A c++\WindowsServer2008R2
Checked out revision 1.

C:\Temp\svntest>svn co
file:///C:/Temp/svntest/repos/trunk/c++/WindowsServer2008R2
Checked out revision 1.

C:\Temp\svntest>dir
...
05-09-2018 16:33 <DIR> .
05-09-2018 16:33 <DIR> ..
05-09-2018 16:33 <DIR> c++
05-09-2018 15:12 <DIR> repos
05-09-2018 16:33 <DIR> WindowsServer2008R2
]]]

So I conclude that this is a bug in GitHub, sending it's data to the svn client.
Workaround: perform a checkout of a parent directory higher up the
tree, so the root path of your working copy does not contain those '+'
signs.

-- 
Johan
Received on 2018-09-05 16:44:11 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.