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

Re: svn commit: r990537 - /subversion/branches/performance/subversion/libsvn_subr/svn_temp_serializer.c

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Thu, 9 Sep 2010 00:20:49 +0200

On Wed, Sep 8, 2010 at 12:41 PM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
> On Wed, Sep 8, 2010 at 12:00 PM, Stefan Fuhrmann
> <stefanfuhrmann_at_alice-dsl.de> wrote:
>> Johan Corveleyn wrote:
>>>
>>> On Mon, Sep 6, 2010 at 2:10 AM, Stefan Fuhrmann
>>> <stefanfuhrmann_at_alice-dsl.de> wrote:
>>>
>>>>
>>>> The only way to get closer to understanding the nature of the
>>>> problem, I've added extensive logging code to the cache.
>>>> Please run "svnserve -M1000 -d --forground -r ... > svnserve.log",
>>>> zip the log file after the programm crashed & got terminated and
>>>> send it to me directly.
>>>>
>>>
>>> Ok, here it is in attachment, zipped together with the .log and .dmp
>>> files from the crash.
>>>
>>> The exact log command I executed was:
>>> $ svn log
>>> svn://localhost/trunk/sourcesEJB/uz/s9server/services/toegang/driver/settings.xml
>>>
>>> Cheers,
>>>
>>
>> Thanks Johan!
>>
>> I finally found the problem and it actually was more likely
>> to hit 32 bit systems then 64 bit ones. The relevant part
>> from the log is this:
>>
>> create cache 1 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:RRI
>> create cache 2 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:DAG
>> create cache 3 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:DIR
>> create cache 4 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:PACK-MANIFEST
>> create cache 5 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:TEXT
>> create cache 6 prefix =
>> fsfs:8d52877e-3a3d-4b59-a976-c8364f526eee/C:/research/svn/experiment/repos/db:NODEREVS
>> get 6: key=P+, Y3 MD5=52408b02cc58866e204010717f31c0ef hash=42680402
>> (0,257607) not found
>> set 6: key=P+, Y3 MD5=52408b02cc58866e204010717f31c0ef hash=42680402
>> (0,257607) 480_at_2113312
>> get 6: key=P+, Y3 MD5=52408b02cc58866e204010717f31c0ef hash=42680402
>> (0,257607) 480_at_2113312
>> get 2: key=2(& /trunk/sourcesEJB/uz/s9server
>> MD5=52408b029f15368c2de222f27705f679 hash=42680402 (0,257607) 480_at_2113312
>> <crash>
>>
>> As you can see, bucket (0,257607) contains a NODEREV
>> the last get will read it as a DAG node. It only tested the first
>> 4 bytes of the MD5 key hash because the to_find variable
>> in find_entry has been a local array once and has become a
>> pointer later on. sizeof(to_find) was now 4 .. 8 instead of 16.
>>
>> r994956 should fix the problem.
>
> That's great news! I'll give it a spin tonight.

Yes! My tests pass now, there are no more crashes. It all works fine.

Cheers,

-- 
Johan
Received on 2010-09-09 00:21:30 CEST

This is an archived mail posted to the Subversion Dev mailing list.