From cfad6467481faef9bf82c573acaaca5b79dd6eb2 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Sun, 6 Oct 2013 11:54:11 +0200 Subject: [PATCH 1/4] Removed left over debug output. --- indra/cmake/FindGoogleBreakpad.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake index d4b2eb1b3..18e0b56ed 100644 --- a/indra/cmake/FindGoogleBreakpad.cmake +++ b/indra/cmake/FindGoogleBreakpad.cmake @@ -11,8 +11,6 @@ FIND_PATH(BREAKPAD_INCLUDE_DIRECTORIES common/using_std_string.h PATH_SUFFIXES google_breakpad) -MESSAGE("BREAKPAD_INCLUDE_DIRECTORIES = \"${BREAKPAD_INCLUDE_DIRECTORIES}\".") - SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client) FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} From f7614dced302a8c6020c49e12bf60f7d8ee0d3ee Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Sun, 6 Oct 2013 15:27:40 +0200 Subject: [PATCH 2/4] Fix possible problem with negative mQueuedCommands mQueuedCommands was unsigned, but can become shortly negative. Unfortunately this means I had to remove the assert that keeps track of possible errors, but I believe that already has been proven that it works anyway. The reason it can become negative is because its meaning is "Number of added ADD (request) commands minus number of REMOVE (request) commands". Hence, it is incremented when an ADD command is added to the queue and decremented when that ADD command is removed from the queue. However, it is first decremented when a REMOVE command is added to the queue and then incremented again when that REMOVE command is removed again from the queue. Such a remove command is current extremely rare: it only happens when curl fails to time out - and the backup timeout of the statemachine fires after 10 minutes of a curl request being idle. That should normally only happen if a request never reached curl of course, and is queued in the curl thread, waiting to be added to curl, aka: -0-0-1,{...} for 10 minutes... Now that, in turn should be impossible (since the "don't count long poll connections) unless the Curl* Debug Setting variables are changed to wrong values.. but ok, can only guess here. --- indra/llmessage/aicurlperservice.h | 5 +++-- indra/llmessage/aicurlthread.cpp | 2 +- indra/newview/aihttpview.cpp | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/llmessage/aicurlperservice.h b/indra/llmessage/aicurlperservice.h index 8af4cdab6..9ecec8c72 100644 --- a/indra/llmessage/aicurlperservice.h +++ b/indra/llmessage/aicurlperservice.h @@ -145,7 +145,8 @@ class AIPerService { queued_request_type mQueuedRequests; // Waiting (throttled) requests. U16 mApprovedRequests; // The number of approved requests for this CT by approveHTTPRequestFor that were not added to the command queue yet. - U16 mQueuedCommands; // Number of add commands (minus remove commands), for this service, in the command queue. + S16 mQueuedCommands; // Number of add commands (minus remove commands), for this service, in the command queue. + // This value can temporarily become negative when remove commands are added to the queue for add requests that were already processed. U16 mAdded; // Number of active easy handles with this service. U16 mFlags; // ctf_empty: Set to true when the queue becomes precisely empty. // ctf_full : Set to true when the queue is popped and then still isn't empty; @@ -268,7 +269,7 @@ class AIPerService { public: void added_to_command_queue(AICapabilityType capability_type) { ++mCapabilityType[capability_type].mQueuedCommands; mark_inuse(capability_type); } - void removed_from_command_queue(AICapabilityType capability_type) { llassert(mCapabilityType[capability_type].mQueuedCommands > 0); --mCapabilityType[capability_type].mQueuedCommands; } + void removed_from_command_queue(AICapabilityType capability_type) { --mCapabilityType[capability_type].mQueuedCommands; } void added_to_multi_handle(AICapabilityType capability_type, bool event_poll); // Called when an easy handle for this service has been added to the multi handle. void removed_from_multi_handle(AICapabilityType capability_type, bool event_poll, bool downloaded_something, bool success); // Called when an easy handle for this service is removed again from the multi handle. diff --git a/indra/llmessage/aicurlthread.cpp b/indra/llmessage/aicurlthread.cpp index 83e258fd9..0375f8bc3 100644 --- a/indra/llmessage/aicurlthread.cpp +++ b/indra/llmessage/aicurlthread.cpp @@ -1312,7 +1312,7 @@ void AICurlThread::process_commands(AICurlMultiHandle_wat const& multi_handle_w) *command_being_processed_w = command_queue_w->commands.front(); command = command_being_processed_w->command(); } - // Update the size: the number netto number of pending requests in the command queue. + // Update the size: the netto number of pending requests in the command queue. command_queue_w->commands.pop_front(); if (command == cmd_add) { diff --git a/indra/newview/aihttpview.cpp b/indra/newview/aihttpview.cpp index 11e5af66b..3bc6b18f7 100644 --- a/indra/newview/aihttpview.cpp +++ b/indra/newview/aihttpview.cpp @@ -109,14 +109,14 @@ void AIServiceBar::draw() { if (col < 2) { - text = llformat(" | %hu-%hu-%lu,{%hu/%hu,%u}/%u", + text = llformat(" | %hu-%hd-%lu,{%hu/%hu,%u}/%u", ct.mApprovedRequests, ct.mQueuedCommands, ct.mQueuedRequests.size(), ct.mAdded, ct.mConcurrentConnections, ct.mDownloading, ct.mMaxPipelinedRequests); } else { - text = llformat(" | --%hu-%lu,{%hu/%hu,%u}", + text = llformat(" | --%hd-%lu,{%hu/%hu,%u}", ct.mQueuedCommands, ct.mQueuedRequests.size(), ct.mAdded, ct.mConcurrentConnections, ct.mDownloading); } From 64513e7229769b07f65070492ab7581da6ed6def Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Sun, 6 Oct 2013 19:42:58 +0200 Subject: [PATCH 3/4] Fix boost upgrade for standalone --- indra/cmake/Boost.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 3ad2fceb7..e8d97a574 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -8,7 +8,7 @@ if (STANDALONE) include(FindBoost) set(Boost_USE_MULTITHREADED ON) - find_package(Boost 1.40.0 COMPONENTS date_time filesystem program_options regex system thread wave) + find_package(Boost 1.51.0 COMPONENTS date_time filesystem program_options regex system thread wave context) else (STANDALONE) use_prebuilt_binary(boost) set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) From cf100fc36c30dccabc17b7a06a25f190e94ace89 Mon Sep 17 00:00:00 2001 From: Sean Devin Date: Sat, 5 Oct 2013 08:27:30 +1000 Subject: [PATCH 4/4] Do not use pcre on linux64 Conflicts: indra/newview/viewer_manifest.py Merged with a patch that I wrote. The linux pcre prebuilts can also be removed from install.xml, but for now leaving them there because the prebuilts are still in use by the libcollada prebuilt (probably should just move them into that git repository). --- indra/cmake/Colladadom.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/cmake/Colladadom.cmake b/indra/cmake/Colladadom.cmake index 9041803d5..a113ee2cf 100644 --- a/indra/cmake/Colladadom.cmake +++ b/indra/cmake/Colladadom.cmake @@ -10,9 +10,9 @@ if (STANDALONE) else (STANDALONE) use_prebuilt_binary(colladadom) - if (NOT WINDOWS) + if (NOT WINDOWS AND NOT LINUX) use_prebuilt_binary(pcre) - endif (NOT WINDOWS) + endif (NOT WINDOWS AND NOT LINUX) if (NOT DARWIN AND NOT WINDOWS) use_prebuilt_binary(libxml)