Johan Corveleyn wrote:
On Mon, Aug 30, 2010 at 9:32 PM, Johan Corveleyn <jcor...@gmail.com
<mailto:jcor...@gmail.com>> wrote:
On Mon, Aug 30, 2010 at 12:05 PM, Stefan Fuhrmann
<stefanfuhrm...@alice-dsl.de <mailto:stefanfuhrm...@alice-dsl.de>>
wrote:
I thought so ;) To narrow down the nature of the problem,
I added some checks that should be able to discern plain
data corruption from (de-)serialization issues. Please apply
either the patch or replace the original files with the versions
in the .zip file.
A debug build should then, hopefully, trigger a different
and more specific assertion.
Ok, will try that now.
:-(, I updated to r990759 and applied your attached debug.patch, but I
just get the same assertion (offset by 4 lines), with no additional
information:
[[[
$ svnserve -d -r c:/research/svn/experiment/repos
Assertion failed: *ptr > buffer, file
..\..\..\subversion\libsvn_subr\svn_temp_serializer.c, line 286
]]]
Anything else I can try?
The failure was expected. With the patched code, I just
hope to get more context information.
Could you send me the call stack dump? My suspicion is
that the DAG node is already (partially) garbage before it
actually gets added to the cache.
FWIW, I do see a lot of warnings during compilation of
cache-membuffer.c (this is after applying your patch, so line-numbers
should be interpreted accordingly):
[[[
..\..\..\subversion\libsvn_subr\cache-membuffer.c(353): warning C4245:
'=' : conversion from 'int' to 'apr_uint64_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(384): warning C4245:
'=' : conversion from 'int' to 'apr_uint32_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(433): warning C4245:
'return' : conversion from 'int' to 'apr_uint32_t', signed/unsigned
mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(546): warning C4244:
'initializing' : conversion from 'apr_uint64_t' to 'apr_size_t',
possible loss of data
..\..\..\subversion\libsvn_subr\cache-membuffer.c(656): warning C4244:
'initializing' : conversion from 'apr_uint64_t' to 'int', possible
loss of data
..\..\..\subversion\libsvn_subr\cache-membuffer.c(663): warning C4018:
'>=' : signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(731): warning C4245:
'=' : conversion from 'int' to 'apr_uint32_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(732): warning C4245:
'=' : conversion from 'int' to 'apr_uint32_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(733): warning C4245:
'=' : conversion from 'int' to 'apr_uint32_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(736): warning C4244:
'function' : conversion from 'apr_uint64_t' to 'apr_size_t', possible
loss of data
..\..\..\subversion\libsvn_subr\cache-membuffer.c(737): warning C4305:
'type cast' : truncation from 'apr_uint64_t' to 'unsigned char *'
None of those should affect the behavior.
..\..\..\subversion\libsvn_subr\cache-membuffer.c(771): warning C4018:
'<' : signed/unsigned mismatch
That one is a theoretical issue on LLP64.
..\..\..\subversion\libsvn_subr\cache-membuffer.c(773): warning C4245:
'=' : conversion from 'int' to 'apr_uint64_t', signed/unsigned mismatch
..\..\..\subversion\libsvn_subr\cache-membuffer.c(944): warning C4244:
'=' : conversion from 'apr_uint64_t' to 'apr_size_t', possible loss of
data
..\..\..\subversion\libsvn_subr\cache-membuffer.c(946): warning C4305:
'type cast' : truncation from 'apr_uint64_t' to 'char *'
]]]
Uncritical, again. I will fix them all later this week.
Thank you for your time helping me to debug that code!
-- Stefan^2.