On Sun, May 16, 2010 at 10:38 AM, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
> During the last few days, I've changed TSVN to link against the svn trunk.
> The speed is much better now, so thanks for that. It's not as fast as the
> 1.6.x branch yet but it's usable.
> About my problem:
> serf is now the default DAV lib svn uses. But with serf I get tons of app
> crashes (serf calls abort() - something I won't discuss here anymore since
> you all should know my opinion about that).
> For example: a simple checkout of the svn trunk crashed after about 5
> seconds. Subsequent updates did too - I had to run cleanup and restart the
> update 27 (!!) times until I had the svn trunk on my harddrive.
> I'm using serf 0.6.1, but the same problem existed with 0.3.1. I updated to
> 0.6.1 yesterday hoping it would solve the problem, but apparently didn't.
I'd expect 0.3.1 to be more stable than 0.6.1, especially on Windows.
The latest serf release contains some major changes that I suppose
where only tested on *nix platforms.
> All this tested on Win7 x64, using an x64 build of svn/tsvn.
> Since this problem is easily reproducable on my machine I'm wondering what
> might be so different that you guys never had this problem?
The cause of these crashes is not directly Windows related, but it
seems that the situation that triggers the crash - resetting the
connection after the server has indicated it will be closed - happens
more on Windows than on Linux/Mac OS X. I'm not sure why.
What's happening is that serf deletes request buckets in two places in
the code, once directly in the aggregate bucket, and once while
cleaning up the pool that holds those buckets during cancel_request.
Attached patch (against serf trunk) fixes that, by cleaning up the
request buckets in the same place where the request pool is also
destroyed. Besides making the code cleaner, it ensures those types of
buckets are only destroyed once.
The patch isn't ready yet, but I'll try to finish it in the coming days.
Received on 2010-05-24 15:52:11 CEST