#3795 Crash at getVolatileAPRPool()
parent
193cab14c2
commit
e671cb54fe
|
|
@ -183,12 +183,12 @@ void LL::WorkQueueBase::callWork(const Work& work)
|
|||
catch (...)
|
||||
{
|
||||
// Stash any other kind of uncaught exception to be rethrown by main thread.
|
||||
LL_WARNS("LLCoros") << "Capturing uncaught exception in WorkQueueBase "
|
||||
LL_WARNS("LLCoros") << "Capturing and rethrowing uncaught exception in WorkQueueBase "
|
||||
<< getKey() << LL_ENDL;
|
||||
|
||||
LL::WorkQueue::ptr_t main_queue = LL::WorkQueue::getInstance("mainloop");
|
||||
main_queue->post(
|
||||
// Bind the current exception rethrow it in main loop.
|
||||
// Bind the current exception, rethrow it in main loop.
|
||||
[exc = std::current_exception()]() { std::rethrow_exception(exc); });
|
||||
}
|
||||
#endif // else LL_WINDOWS
|
||||
|
|
|
|||
|
|
@ -170,12 +170,14 @@ bool LLCommandManager::load()
|
|||
|
||||
if (!parser.readXUI(commands_file, commandsParams))
|
||||
{
|
||||
LLError::LLUserWarningMsg::showMissingFiles();
|
||||
LL_ERRS() << "Unable to load xml file: " << commands_file << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!commandsParams.validateBlock())
|
||||
{
|
||||
LLError::LLUserWarningMsg::showMissingFiles();
|
||||
LL_ERRS() << "Invalid commands file: " << commands_file << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1256,10 +1256,26 @@ LLNotifications::LLNotifications()
|
|||
LLInstanceTracker<LLNotificationChannel, std::string>::instanceCount();
|
||||
}
|
||||
|
||||
|
||||
LLNotifications::~LLNotifications()
|
||||
{
|
||||
// Clear explicitly, something in ~LLNotifications() crashes so narrowing down suspects
|
||||
pHistoryChannel = nullptr;
|
||||
pExpirationChannel = nullptr;
|
||||
mGlobalStrings.clear();
|
||||
mTemplates.clear();
|
||||
mVisibilityRules.clear();
|
||||
mUniqueNotifications.clear();
|
||||
mListener = nullptr;
|
||||
}
|
||||
|
||||
void LLNotifications::clear()
|
||||
{
|
||||
mDefaultChannels.clear();
|
||||
mTemplates.clear();
|
||||
// At this point mTemplates still gets used by lingering notifications
|
||||
// to do responses (ex: group notice will call forceResponse()), but
|
||||
// since network should be down and everything save, it's questionable
|
||||
// whether it should stay that way
|
||||
}
|
||||
|
||||
// The expiration channel gets all notifications that are cancelled
|
||||
|
|
|
|||
|
|
@ -887,7 +887,7 @@ class LLNotifications :
|
|||
{
|
||||
LLSINGLETON(LLNotifications);
|
||||
LOG_CLASS(LLNotifications);
|
||||
virtual ~LLNotifications() {}
|
||||
virtual ~LLNotifications();
|
||||
|
||||
public:
|
||||
|
||||
|
|
|
|||
|
|
@ -5216,15 +5216,28 @@ void LLAppViewer::sendLogoutRequest()
|
|||
gLogoutInProgress = true;
|
||||
if (!mSecondInstance)
|
||||
{
|
||||
mLogoutMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LOGOUT_MARKER_FILE_NAME);
|
||||
|
||||
mLogoutMarkerFile.open(mLogoutMarkerFileName, LL_APR_WB);
|
||||
if (mLogoutMarkerFile.getFileHandle())
|
||||
mLogoutMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LOGOUT_MARKER_FILE_NAME);
|
||||
try
|
||||
{
|
||||
LL_INFOS("MarkerFile") << "Created logout marker file '"<< mLogoutMarkerFileName << "' " << LL_ENDL;
|
||||
recordMarkerVersion(mLogoutMarkerFile);
|
||||
if (!mLogoutMarkerFile.getFileHandle())
|
||||
{
|
||||
mLogoutMarkerFile.open(mLogoutMarkerFileName, LL_APR_WB);
|
||||
if (mLogoutMarkerFile.getFileHandle())
|
||||
{
|
||||
LL_INFOS("MarkerFile") << "Created logout marker file '" << mLogoutMarkerFileName << "' " << LL_ENDL;
|
||||
recordMarkerVersion(mLogoutMarkerFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("MarkerFile") << "Cannot create logout marker file " << mLogoutMarkerFileName << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("MarkerFile") << "Atempted to reopen file '" << mLogoutMarkerFileName << "' " << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (...)
|
||||
{
|
||||
LL_WARNS("MarkerFile") << "Cannot create logout marker file " << mLogoutMarkerFileName << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1457,7 +1457,7 @@ void LLViewerWindow::handleMouseLeave(LLWindow *window)
|
|||
|
||||
bool LLViewerWindow::handleCloseRequest(LLWindow *window)
|
||||
{
|
||||
if (!LLApp::isExiting())
|
||||
if (!LLApp::isExiting() && !LLApp::isStopped())
|
||||
{
|
||||
// User has indicated they want to close, but we may need to ask
|
||||
// about modified documents.
|
||||
|
|
|
|||
Loading…
Reference in New Issue