[sldev] SNOW-2 (Curl crash) update
Philippe Bossut (Merov Linden)
merov at lindenlab.com
Fri Jul 3 00:09:57 PDT 2009
Hi,
I've been investigating that bug quite a bit this week, writing unit
tests and instrumenting the code. I don't have a fix yet (mostly
because I don't have a repro case) but I'm narrowing it down to the
use of one class: LLCurlRequest.
I've been also digging through the 1000+ crash reports we got on
Snowglobe 1.0.2.2451 and found some clear patterns that you might find
interesting:
* All the Curl crashes happened with Windows Vista (81) or
Windows XP (41). Not one on Linux or Mac. So that seems to be platform
specific.
* All show the exact same trace at the end (through the exe entry
point is slightly different between XP and Vista but that's due to how
the system wrap the thread):
[0] Curl_llist_insert_next [snowgloberelease.exe unknownfile]
[1] Curl_hash_add [snowgloberelease.exe unknownfile]
[2] Curl_cache_addr [snowgloberelease.exe unknownfile]
[3] curl_getdate [snowgloberelease.exe unknownfile]
[4] Curl_addrinfo4_callback [snowgloberelease.exe unknownfile]
[5] Curl_cookie_clearall [snowgloberelease.exe unknownfile]
* Out of 122 crashers I explored, all but 8 used the map during
the session
* Out of those 114 crashers, more than 100 happen while using the
map
Looking into the code and instrumenting LLCurl, I found out that:
* The LLCurlRequest class is only used for map tiles fetching
* All other curl requests go through LLCurlEasyRequest and are
mostly concentrated at the beginning of a session
So, in conclusion, it seems that we're having a thread safety issue
with a piece of LLCurl that has never been exercised (hence tested) in
the viewer before. That crash is Windows specific and has a very
specific trace signature. Anyone knows of any Windows specific Curl
thread issue with curl 7.16.4? Insight there would be great as it
might prompt us to upgrade that library.
Once I'm done with the 2483 merge, I'll commit some changes to LLCurl
that add extra llassert_always() and checks so that we have a chance
to catch oddities before we call into curl.
Cheers,
- Merov
More information about the SLDev
mailing list