Files
SingularityViewer/indra/llcommon
Aleric Inglewood 2830b35aa6 Avoid dead lock in LLQueuedThread::generateHandle / LLTextureFetchWorker::callbackDecoded
Thead 1:

indra/llcommon/llqueuedthread.cpp:456:

452                     if (complete)
453                     {
454                             lockData();             // This locks LLThread::mRunCondition
455                             req->setStatus(STATUS_COMPLETE);
456                             req->finishRequest(true);

LLImageDecodeThread::ImageRequest::finishRequest calls:
    mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux);

LLTextureFetchWorker::DecodeResponder::completed calls:
    worker->callbackDecoded(success, raw, aux);

LLTextureFetchWorker::callbackDecoded calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex

Thread 2:

LLTextureFetchWorker::doWork calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex
    .
    .
    .
    mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux, new DecodeResponder(mFetcher, mID, this));

LLImageDecodeThread::decodeImage calls:
    handle_t handle = generateHandle();

LLQueuedThread::generateHandle calls:
    lockData();                                         // This locks LLThread::mRunCondition
2012-07-22 04:13:23 +02:00
..
2012-02-10 01:37:43 +01:00
2012-02-10 01:37:43 +01:00
2012-07-03 00:54:25 -04:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-01-09 16:14:33 -05:00
2011-05-08 17:08:48 +02:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-01-29 01:33:14 -06:00
2012-03-06 17:04:05 +01:00
2011-10-13 00:03:56 -05:00
2010-04-02 02:48:44 -03:00
2011-07-15 00:21:38 -05:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-07-14 01:35:15 -05:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-03-15 02:33:55 -05:00
2010-04-02 02:48:44 -03:00
2011-06-07 21:35:10 -05:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-02-23 18:50:28 +01:00
2012-02-23 18:50:28 +01:00
2010-04-02 02:48:44 -03:00
2012-02-05 05:35:01 +01:00
2012-01-23 18:30:54 -06:00
2012-04-29 00:25:40 -04:00
2010-04-02 02:48:44 -03:00
2012-01-22 02:49:06 +01:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-05-08 17:08:48 +02:00
2011-11-23 23:40:31 -06:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-01-29 01:33:14 -06:00
2012-01-29 01:33:14 -06:00
2010-04-02 02:48:44 -03:00
2012-01-29 01:33:14 -06:00
2012-01-29 01:33:14 -06:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-04-29 00:25:40 -04:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-01-23 18:30:54 -06:00
2012-01-23 18:30:54 -06:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-02-01 03:27:04 +01:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2012-03-06 09:01:01 +01:00
2012-07-02 23:22:42 +02:00
2012-02-05 05:35:01 +01:00
2012-02-05 05:35:01 +01:00
2011-03-15 02:33:55 -05:00
2010-04-02 02:48:44 -03:00
2012-07-16 12:19:22 +02:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-02-22 18:24:17 -06:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-09-20 22:16:00 -05:00
2011-10-13 00:03:56 -05:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2011-07-13 04:35:38 -05:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00