diff options
Diffstat (limited to 'indra/newview/llappviewer.cpp')
| -rw-r--r-- | indra/newview/llappviewer.cpp | 46 | 
1 files changed, 44 insertions, 2 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index cfc38f41b9..6db9807861 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -977,6 +977,7 @@ bool LLAppViewer::mainLoop()  	LLVoiceClient::getInstance()->init(gServicePump);  	LLTimer frameTimer,idleTimer;  	LLTimer debugTime; +	LLFrameTimer memCheckTimer;  	LLViewerJoystick* joystick(LLViewerJoystick::getInstance());  	joystick->setNeedsReset(true); @@ -987,11 +988,29 @@ bool LLAppViewer::mainLoop()      // point of posting.      LLSD newFrame; +	const F32 memory_check_interval = 1.0f ; //second +  	// Handle messages  	while (!LLApp::isExiting())  	{  		LLFastTimer::nextFrame(); // Should be outside of any timer instances +		//clear call stack records +		llclearcallstacks; + +		//check memory availability information +		{ +			if(memory_check_interval < memCheckTimer.getElapsedTimeF32()) +			{ +				memCheckTimer.reset() ; + +				//update the availability of memory +				LLMemoryInfo::getAvailableMemoryKB(mAvailPhysicalMemInKB, mAvailVirtualMemInKB) ; +			} +			llcallstacks << "Available physical mem(KB): " << mAvailPhysicalMemInKB << llcallstacksendl ; +			llcallstacks << "Available virtual mem(KB): " << mAvailVirtualMemInKB << llcallstacksendl ; +		} +  		try  		{  			pingMainloopTimeout("Main:MiscNativeWindowEvents"); @@ -1218,11 +1237,20 @@ bool LLAppViewer::mainLoop()  				resumeMainloopTimeout();  				pingMainloopTimeout("Main:End"); -			} -						 +			}			  		}  		catch(std::bad_alloc)  		{			 +			{ +				llinfos << "Availabe physical memory(KB) at the beginning of the frame: " << mAvailPhysicalMemInKB << llendl ; +				llinfos << "Availabe virtual memory(KB) at the beginning of the frame: " << mAvailVirtualMemInKB << llendl ; + +				LLMemoryInfo::getAvailableMemoryKB(mAvailPhysicalMemInKB, mAvailVirtualMemInKB) ; + +				llinfos << "Current availabe physical memory(KB): " << mAvailPhysicalMemInKB << llendl ; +				llinfos << "Current availabe virtual memory(KB): " << mAvailVirtualMemInKB << llendl ; +			} +  			//stop memory leaking simulation  			LLFloaterMemLeak* mem_leak_instance =  				LLFloaterReg::findTypedInstance<LLFloaterMemLeak>("mem_leaking"); @@ -2009,6 +2037,15 @@ bool LLAppViewer::initConfiguration()  	// - apply command line settings   	clp.notify();  +	// Register the core crash option as soon as we can +	// if we want gdb post-mortem on cores we need to be up and running +	// ASAP or we might miss init issue etc. +	if(clp.hasOption("disablecrashlogger")) +	{ +		llwarns << "Crashes will be handled by system, stack trace logs and crash logger are both disabled" << llendl; +		LLAppViewer::instance()->disableCrashlogger(); +	} +  	// Handle initialization from settings.  	// Start up the debugging console before handling other options.  	if (gSavedSettings.getBOOL("ShowConsoleWindow")) @@ -2599,6 +2636,11 @@ void LLAppViewer::handleViewerCrash()  		abort();  	} +	if (LLApp::isCrashloggerDisabled()) +	{ +		abort(); +	} +  	// Returns whether a dialog was shown.  	// Only do the logic in here once  	if (pApp->mReportedCrash) | 
