diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 22cd861c72ff11f382865e92f86e163e53ad2949..bf57e47756047c996aa5704f26a96fc6a992a1ca 100755
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -119,6 +119,7 @@ namespace {
 				LL_INFOS() << "Error setting log file to " << filename << LL_ENDL;
 			}
 			mWantsTime = true;
+            mWantsTags = true;
 		}
 		
 		~RecordToFile()
@@ -558,7 +559,7 @@ namespace LLError
 		mFunctionString += std::string(mFunction) + ":";
 		for (size_t i = 0; i < mTagCount; i++)
 		{
-			mTagString += std::string("#") + mTags[i] + ((i == mTagCount - 1) ? "" : " ");
+			mTagString += std::string("#") + mTags[i] + ((i == mTagCount - 1) ? "" : ",");
 		}
 	}
 
@@ -931,14 +932,19 @@ namespace
 			}
 
 			if (show_level && r->wantsLevel())
-				{
-				message_stream << site.mLevelString << " ";
-				}
+            {
+				message_stream << site.mLevelString;
+            }
 				
 			if (show_tags && r->wantsTags())
 			{
-				message_stream << site.mTagString << " ";
+				message_stream << site.mTagString;
 			}
+			if ((show_level && r->wantsLevel())||
+                (show_tags && r->wantsTags()))
+            {
+                message_stream << " ";
+            }
 
 			if (show_function && r->wantsFunctionName())
 			{
diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp
index bbfcb6b9558d6b7d914b39b24e31a36f920a66bb..39c21a195aae9953a514fcba70672449b272438e 100755
--- a/indra/newview/llattachmentsmgr.cpp
+++ b/indra/newview/llattachmentsmgr.cpp
@@ -117,7 +117,6 @@ void LLAttachmentsMgr::requestPendingAttachments()
 	if (mPendingAttachments.size())
 	{
 		requestAttachments(mPendingAttachments);
-		mPendingAttachments.clear();
 	}
 }
 
@@ -125,7 +124,7 @@ void LLAttachmentsMgr::requestPendingAttachments()
 // request at most 40 attachments and the rest will be
 // ignored. Currently the max attachments per avatar is 38, so the 40
 // limit should not be hit in practice.
-void LLAttachmentsMgr::requestAttachments(const attachments_vec_t& attachment_requests)
+void LLAttachmentsMgr::requestAttachments(attachments_vec_t& attachment_requests)
 {
 	// Make sure we got a region before trying anything else
 	if( !gAgent.getRegion() )
@@ -133,7 +132,8 @@ void LLAttachmentsMgr::requestAttachments(const attachments_vec_t& attachment_re
 		return;
 	}
 
-	S32 obj_count = attachment_requests.size();
+    const S32 max_objects_per_request = 5;
+	S32 obj_count = llmin((S32)attachment_requests.size(),max_objects_per_request);
 	if (obj_count == 0)
 	{
 		return;
@@ -145,7 +145,7 @@ void LLAttachmentsMgr::requestAttachments(const attachments_vec_t& attachment_re
 	const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET;
 	if( obj_count > MAX_OBJECTS_TO_SEND )
 	{
-        LL_WARNS() << "ATT Too many attachments requested: " << attachment_requests.size()
+        LL_WARNS() << "ATT Too many attachments requested: " << obj_count
                    << " exceeds limit of " << MAX_OBJECTS_TO_SEND << LL_ENDL;
         LL_WARNS() << "ATT Excess requests will be ignored" << LL_ENDL;
 
@@ -159,12 +159,10 @@ void LLAttachmentsMgr::requestAttachments(const attachments_vec_t& attachment_re
 	compound_msg_id.generate();
 	LLMessageSystem* msg = gMessageSystem;
 
-	
-	S32 i = 0;
-	for (attachments_vec_t::const_iterator iter = attachment_requests.begin();
-		 iter != attachment_requests.end();
-		 ++iter)
-	{
+    // by construction, obj_count <= attachment_requests.size(), so no
+    // check against empty() is needed here.
+    for (S32 i=0; i<obj_count; i++)
+    {
 		if( 0 == (i % OBJECTS_PER_PACKET) )
 		{
 			// Start a new message chunk
@@ -178,33 +176,35 @@ void LLAttachmentsMgr::requestAttachments(const attachments_vec_t& attachment_re
 			msg->addBOOLFast(_PREHASH_FirstDetachAll, false );
 		}
 
-		const AttachmentsInfo &attachment = (*iter);
+		const AttachmentsInfo& attachment = attachment_requests.front();
 		LLViewerInventoryItem* item = gInventory.getItem(attachment.mItemID);
-		if (!item)
+		if (item)
+        {
+            LL_DEBUGS("Avatar") << "ATT requesting from attachment_requests " << item->getName()
+                                << " " << item->getLinkedUUID() << LL_ENDL;
+            S32 attachment_pt = attachment.mAttachmentPt;
+            if (attachment.mAdd) 
+                attachment_pt |= ATTACHMENT_ADD;
+            
+            msg->nextBlockFast(_PREHASH_ObjectData );
+            msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
+            msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner());
+            msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt);
+            pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
+            msg->addStringFast(_PREHASH_Name, item->getName());
+            msg->addStringFast(_PREHASH_Description, item->getDescription());
+        }
+        else
 		{
-			LL_INFOS() << "Attempted to add non-existent item ID:" << attachment.mItemID << LL_ENDL;
-			continue;
+			LL_INFOS("Avatar") << "ATT Attempted to add non-existent item ID:" << attachment.mItemID << LL_ENDL;
 		}
-		LL_DEBUGS("Avatar") << "ATT requesting from attachment_requests " << item->getName()
-							<< " " << item->getLinkedUUID() << LL_ENDL;
-		S32 attachment_pt = attachment.mAttachmentPt;
-		if (attachment.mAdd) 
-			attachment_pt |= ATTACHMENT_ADD;
-
-		msg->nextBlockFast(_PREHASH_ObjectData );
-		msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
-		msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner());
-		msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt);
-		pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
-		msg->addStringFast(_PREHASH_Name, item->getName());
-		msg->addStringFast(_PREHASH_Description, item->getDescription());
 
 		if( (i+1 == obj_count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) )
 		{
 			// End of message chunk
 			msg->sendReliable( gAgent.getRegion()->getHost() );
 		}
-		i++;
+        attachment_requests.pop_front();
 	}
 }
 
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index f9d321398f193f18e2a268f4a1c9f3681ea2522a..d56d6eb27bc2055c36fbf517f0765ba7d0233f6a 100755
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -70,7 +70,7 @@ class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
 		U8 mAttachmentPt;
 		BOOL mAdd;
 	};
-	typedef std::vector<AttachmentsInfo> attachments_vec_t;
+	typedef std::deque<AttachmentsInfo> attachments_vec_t;
 
 	LLAttachmentsMgr();
 	virtual ~LLAttachmentsMgr();
@@ -79,7 +79,7 @@ class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
                               const U8 attachment_pt,
                               const BOOL add);
     void onAttachmentRequested(const LLUUID& item_id);
-	void requestAttachments(const attachments_vec_t& attachment_requests);
+	void requestAttachments(attachments_vec_t& attachment_requests);
 	static void onIdle(void *);
 
     void onAttachmentArrived(const LLUUID& inv_item_id);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ff9e021f8e4e1304a34449091f6abd9e76f9d419..0a578fc0b33e997b49ad747afa2ddc57b292a938 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -732,7 +732,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	const BOOL needsSendToSim = false; // currently, this HUD effect doesn't need to pack and unpack data to do its job
 	mVoiceVisualizer = ( LLVoiceVisualizer *)LLHUDManager::getInstance()->createViewerEffect( LLHUDObject::LL_HUD_EFFECT_VOICE_VISUALIZER, needsSendToSim );
 
-	LL_DEBUGS("Avatar") << "LLVOAvatar Constructor (0x" << this << ") id:" << mID << LL_ENDL;
+	LL_DEBUGS("Avatar","Message") << "LLVOAvatar Constructor (0x" << this << ") id:" << mID << LL_ENDL;
 
 	mPelvisp = NULL;