[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