Fix crash in LLTextureFetch::getWorker upon viewer exit.

This is now necessary since the curl thread no longer syncs with the
main thread: it is possible that a request finishes after a texture
fetch thread was shot down but before curl was stopped, and curl
calling BufferedCurlEasyRequest::processOutput while objects that the
responder uses were already destructed (most notably
LLTextureFetch itself).
This commit is contained in:
Aleric Inglewood
2013-03-21 20:26:01 +01:00
parent 00b223f2a4
commit 835240fda1
5 changed files with 46 additions and 9 deletions

View File

@@ -163,8 +163,13 @@ void initCurl(void);
// Called once at start of application (from LLAppViewer::initThreads), starts AICurlThread.
void startCurlThread(U32 CurlMaxTotalConcurrentConnections, U32 CurlConcurrentConnectionsPerHost, bool NoVerifySSLCert);
// Called once at end of application (from newview/llappviewer.cpp by main thread),
// with purpose to stop curl threads, free curl resources and deinitialize curl.
// Called once at the end of application before terminating other threads (most notably the texture thread workers)
// with the purpose to stop the curl thread from doing any call backs to running responders: the responders sometimes
// access objects that will be shot down when bringing down other threads.
void shutdownCurl(void);
// Called once at end of application (from newview/llappviewer.cpp by main thread) after all other threads have been terminated
// with the purpose to stop the curl thread, free curl resources and deinitialize curl.
void cleanupCurl(void);
// Called from indra/newview/llfloaterabout.cpp for the About floater, and