From 62527e6f18f0a035a234cf584e31f7eea93fd4a7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Aug 2015 17:05:29 -0400 Subject: MAINT-5506: Fix ugly timing bug in llurlentry static initialization. The problem was that class-static LLUrlEntryParcel::sRegionHost was being initialized by copying class-static LLHost::invalid. Naturally, these two statics are initialized in different source files. Since C++ makes no promises about the relative order in which objects in different object files are initialized, it seems we hit a case in which we were trying to initialize sRegionHost by copying a completely uninitialized LLHost::invalid. In general we might attempt to address such cross-translation-unit issues by introducing an LLSingleton. But in this particular case, the punch line is that LLHost::invalid is explicitly constructed identically to a default-constructed LLHost! In other words, LLHost::invalid provides nothing we couldn't get from LLHost(). All it gives us is an opportunity for glitches such as the above. Remove LLHost::invalid and all references, replacing with LLHost(). --- indra/newview/llvoavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f753448770..db949437a7 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -8095,7 +8095,7 @@ LLHost LLVOAvatar::getObjectHost() const } else { - return LLHost::invalid; + return LLHost(); } } -- cgit v1.2.3 From 9fbcaa5b9a6b3bfe762f5bb34951fbf7f99ecc1b Mon Sep 17 00:00:00 2001 From: Rider Linden Date: Mon, 29 Feb 2016 12:58:50 -0800 Subject: MAINT-5693: Request server bake even if we think we are about to request a stale version. The receiver should know if it will throw out the results. Added some additional logging to help track what's going on. --- indra/newview/llvoavatar.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 0f5add3891..17722e31ca 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7432,6 +7432,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) } // No backsies zone - if we get here, the message should be valid and usable, will be processed. + LL_INFOS("Avatar") << "Processing appearance message version " << this_update_cof_version << LL_ENDL; // Note: // RequestAgentUpdateAppearanceResponder::onRequestRequested() -- cgit v1.2.3 From 217f10f122ba72bcab7b91e3954669e184471fb9 Mon Sep 17 00:00:00 2001 From: Rider Linden Date: Tue, 1 Mar 2016 12:13:18 -0800 Subject: MAINT-5693: Do not rerequest old bakes. If a stale bake is received for processing do not processes it (Only allow newer appearances to process... never older) --- indra/newview/llvoavatar.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 17722e31ca..62ee1a6424 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7356,6 +7356,7 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32 //----------------------------------------------------------------------------- void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) { + static S32 largestCOFSeen(LLViewerInventoryCategory::VERSION_UNKNOWN); LL_DEBUGS("Avatar") << "starts" << LL_ENDL; bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"); @@ -7393,6 +7394,14 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) S32 this_update_cof_version = contents.mCOFVersion; S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion; + if (largestCOFSeen > this_update_cof_version) + { + LL_WARNS("Avatar") << "Already processed appearance for COF version " << + largestCOFSeen << ", discarding appearance with COF " << this_update_cof_version << LL_ENDL; + return; + } + largestCOFSeen = this_update_cof_version; + if( isSelf() ) { LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version -- cgit v1.2.3 From a2bdba7aa245e412e0cd120eb10c76df1598104c Mon Sep 17 00:00:00 2001 From: Rider Linden Date: Wed, 2 Mar 2016 12:06:19 -0800 Subject: MAINT-5693: Only force forward progression of COF version for your own Avatar --- indra/newview/llvoavatar.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 62ee1a6424..69709f2bc9 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7356,7 +7356,7 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32 //----------------------------------------------------------------------------- void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) { - static S32 largestCOFSeen(LLViewerInventoryCategory::VERSION_UNKNOWN); + static S32 largestSelfCOFSeen(LLViewerInventoryCategory::VERSION_UNKNOWN); LL_DEBUGS("Avatar") << "starts" << LL_ENDL; bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"); @@ -7394,19 +7394,26 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) S32 this_update_cof_version = contents.mCOFVersion; S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion; - if (largestCOFSeen > this_update_cof_version) + if (largestSelfCOFSeen > this_update_cof_version) { - LL_WARNS("Avatar") << "Already processed appearance for COF version " << - largestCOFSeen << ", discarding appearance with COF " << this_update_cof_version << LL_ENDL; - return; + LL_WARNS("Avatar") << "****BUG WOULD HAVE HAPPENED****" << + largestSelfCOFSeen << " > " << this_update_cof_version << LL_ENDL; } - largestCOFSeen = this_update_cof_version; if( isSelf() ) { LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version << " last_update_request_cof_version " << last_update_request_cof_version << " my_cof_version " << LLAppearanceMgr::instance().getCOFVersion() << LL_ENDL; + + if (largestSelfCOFSeen > this_update_cof_version) + { + LL_WARNS("Avatar") << "Already processed appearance for COF version " << + largestSelfCOFSeen << ", discarding appearance with COF " << this_update_cof_version << LL_ENDL; + return; + } + largestSelfCOFSeen = this_update_cof_version; + } else { -- cgit v1.2.3 From a407cb784266802317fe299baa792166e3128293 Mon Sep 17 00:00:00 2001 From: Rider Linden Date: Wed, 2 Mar 2016 13:45:32 -0800 Subject: MAINT-5693: Didn't remove a stray debug comment. --- indra/newview/llvoavatar.cpp | 6 ------ 1 file changed, 6 deletions(-) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 69709f2bc9..845bc85a96 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7394,12 +7394,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) S32 this_update_cof_version = contents.mCOFVersion; S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion; - if (largestSelfCOFSeen > this_update_cof_version) - { - LL_WARNS("Avatar") << "****BUG WOULD HAVE HAPPENED****" << - largestSelfCOFSeen << " > " << this_update_cof_version << LL_ENDL; - } - if( isSelf() ) { LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version -- cgit v1.2.3