SL-13830 One more coroutine exit crash

LLWorld is supposed to first remove region from list, then delete the region, but in case of this crash region was returned by handle from llworld yet was mDead and cleaned up, all in main thread.
meow-7.2.2
Andrey Kleshchev 2020-08-22 10:29:33 +03:00
parent 0e0ba2fd86
commit 85e03a7ad7
1 changed files with 15 additions and 0 deletions

View File

@ -298,6 +298,11 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
++mSeedCapAttempts;
if (LLApp::isExiting())
{
return;
}
regionp = LLWorld::getInstance()->getRegionFromHandle(regionHandle);
if (!regionp) //region was removed
{
@ -412,6 +417,11 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCompleteCoro(U64 regionHandle)
break; // no retry
}
if (LLApp::isExiting())
{
break;
}
regionp = LLWorld::getInstance()->getRegionFromHandle(regionHandle);
if (!regionp) //region was removed
{
@ -515,6 +525,11 @@ void LLViewerRegionImpl::requestSimulatorFeatureCoro(std::string url, U64 region
continue;
}
if (LLApp::isExiting())
{
break;
}
// remove the http_result from the llsd
result.erase("http_result");