Discussion:
Error report: wc_db.c line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
Christoph Hannebauer
2018-08-23 11:27:59 UTC
Permalink
Hi,



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\li
bsvn_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/Win7Sampl
es/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.





Best,



Christoph
Nathan Hartman
2018-08-23 18:53:37 UTC
Permalink
On Thu, Aug 23, 2018 at 9:46 AM Christoph Hannebauer <
Post by Christoph Hannebauer
I have not subscribed to the users mailing list, so please CC me in this
thread.
'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))
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?
Johan Corveleyn
2018-09-05 14:43:48 UTC
Permalink
I have not subscribed to the users mailing list, so please CC me in this thread.
'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))
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
Loading...