[sldev] SNOW-2 (Curl crash) update
Philippe Bossut (Merov Linden)
merov at lindenlab.com
Fri Jul 3 20:42:48 PDT 2009
Hi,
Wow! Thanks for all the feedback (public and private) on that one!
Looks like we're locking that nasty bug in our crosshair which is
great considering it's responsible for 10% of all crashers. Thanks a
lot to Thickbrick who identified the libcurl known issue.
I'm going to try to summarize the proposed actions and give my view on
each:
- Use LLCurlEasyRequest only (drop LLCurlRequest): that could be OK
for the map but, considering we want to use http for all textures
eventually, we can't really go with a system that open and close
connections like crazy. Could be a disaster perf wise. We should
consider this bug as an opportunity to fix LLCurlRequest for good and
help the viewer in general, beyond the map. I'm sure Steve and Bao
will thank us later (not to mention the residents... :) )
- Work around the bug in LLCurlRequest: considering that we do support
threads, we could actually run all curl code in its own thread using
the easy interface (synchronous) only. I'm not a big fan of that
solution either as we do have quite a bit of requests going on at the
same time. My instrumentation of the code shows that we typically run
6 simultaneous requests at the beginning of a session (using
LLCurlEasyRequest though) and up to 12 simultaneous request while
browsing the map. We don't really want to queue 12 requests I think.
If we use http fetch for all textures of a scene, I'm quite sure it's
going to be much more simultaneous requests.
- Update libculr to a more recent version and see if that fixes the
problem: as pointed to by Thickbrick, the trace pattern we have seems
to be a known existing bug so that's likely not enough for a solution.
- Use the c-ares resolver for libcurl (proposed by Tofu): that seems
to be the more promising and general solution, making no compromise
and keeping the wrapping llcurl.cpp code simple, multiplatform and
general.
Unless someone comes up with a horror story of why we shouldn't do
that, I'll be working with Tofu next week to get that into Snowglobe.
Thanks again to all proposing solutions and commenting on this thread.
That feels good to see the community work :)
Cheers,
- Merov
On Jul 3, 2009, at 9:49 AM, Tofu Linden wrote:
> Thickbrick Sleaford wrote:
>> There is also an unfixed windows-only crash in libcurl:
>>
>> http://curl.haxx.se/docs/knownbugs.html
>>> 64. The threaded resolver used in libcurl on Windows has some kind
>>> of race
>>> problem when multiple simultanoes resolves are done, like with the
>>> multi
>>> interface transferring many files in parallell:
>>> http://curl.haxx.se/mail/lib-2009-04/0028.html
>
> That's not good.
> The good news is... the c-ares resolver option for libcurl works on
> Windows (last I tried) so we could switch to that and dodge the cited
> bug. There just hasn't been a point until now.
>
> _______________________________________________
> Policies and (un)subscribe information available here:
> http://wiki.secondlife.com/wiki/SLDev
> Please read the policies before posting to keep unmoderated posting
> privileges
More information about the SLDev
mailing list