accessed through the static LLThread::tldata().
Currently this object contains two (public) thread-local
objects: a LLAPRRootPool and a LLVolatileAPRPool.
The first is the general memory pool used by this thread
(and this thread alone), while the second is intended
for short lived memory allocations (needed for APR).
The advantages of not mixing those two is that the latter
is used most frequently, and as a result of it's nature
can be destroyed and reconstructed on a "regular" basis.
This patch adds LLAPRPool (completely replacing the old one),
which is a wrapper around apr_pool_t* and has complete
thread-safity checking.
Whenever an apr call requires memory for some resource,
a memory pool in the form of an LLAPRPool object can
be created with the same life-time as this resource;
assuring clean up of the memory no sooner, but also
not much later than the life-time of the resource
that needs the memory.
Many, many function calls and constructors had the
pool parameter simply removed (it is no longer the
concern of the developer, if you don't write code
that actually does an libapr call then you are no
longer bothered with memory pools at all).
However, I kept the notion of short-lived and
long-lived allocations alive (see my remark in
the jira here: https://jira.secondlife.com/browse/STORM-864?focusedCommentId=235356&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-235356
which requires that the LLAPRFile API needs
to allow the user to specify how long they
think a file will stay open. By choosing
'short_lived' as default for the constructor
that immediately opens a file, the number of
instances where this needs to be specified is
drastically reduced however (obviously, any
automatic LLAPRFile is short lived).
***
Addressed Boroondas remarks in https://codereview.secondlife.com/r/99/
regarding (doxygen) comments. This patch effectively only changes comments.
Includes some 'merge' stuff that ended up in llvocache.cpp
(while starting as a bug fix, now only resulting in a cleanup).
***
Added comment 'The use of apr_pool_t is OK here'.
Added this comment on every line where apr_pool_t
is correctly being used.
This should make it easier to spot (future) errors
where someone started to use apr_pool_t; you can
just grep all sources for 'apr_pool_t' and immediately
see where it's being used while LLAPRPool should
have been used.
Note that merging this patch is very easy:
If there are no other uses of apr_pool_t in the code
(one grep) and it compiles, then it will work.
***
Second Merge (needed to remove 'delete mCreationMutex'
from LLImageDecodeThread::~LLImageDecodeThread).
***
Added back #include <apr_pools.h>.
Apparently that is needed on libapr version 1.2.8.,
the version used by Linden Lab, for calls to
apr_queue_*. This is a bug in libapr (we also
include <apr_queue.h>, that is fixed in (at least) 1.3.7.
Note that 1.2.8 is VERY old. Even 1.3.x is old.
***
License fixes (GPL -> LGPL). And typo in comments.
Addresses merov's comments on the review board.
***
Added Merov's compile fixes for windows.
This was only used for the Linux client to dump a stack trace to
stack_trace.log, which is no longer needed now that we are using
Google Breakpad.
I also removed all of the stack printing code from llappviewerlinux.cpp.
Using Alain's Darwin reporter callback was all that was needed.
Also replaced the call that exposed the breakpad exception class
with a call to just write out the minidump, as that was the only
reason for exposing it. Now clients don't need to know about
Google Breakpad.
svn merge -r99446:104838 svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.25
Conflicts resolved by Prospero, except for one scary conflict in
SendConfirmationEmail.php which was resolved by jarv.
Effectively:
svn merge -r 87048:88773 svn+ssh://svn.lindenlab.com/svn/linden/branches/Branch_1-22-Server
* Plus some gcc4.x fixes
In detail:
* Bump version numbers to 1.22.0 Server
* Updated files for enabled conductor.
* Added tarball pulling during deploy for central servers.
* DEV-15160 Logins not remembering start location on beta grid
* DEV-15167 Random failure with set-classified-stats
* DEV-15193 Viewer Passing Through Unsanitized Strings to DB when creating classifieds.
* Add --location to the curl invocation in fetch_agni_ws_snapshot
* QAR-609 Some Havok4 bug fixes
* QAR-460 Automatic XUI selection & Kick-ass Linux Fonts MergeMe
* DEV-14704 1.21.1.86182 revealing hidden groups in profile
* DEV-14641 Change automated Subject Line messages for IM-to-Email to avoid SPAM association
* DEV-15387 Write unit test for LLStringFn::strip_invalid_xml().
* Changed getpass.getuser() to os.getuid() as getuser() was returning the saved-UID of the process (root user, which kic
ks off parabuild as parabuild u
ser). We want os.getuid() as it correctly returns the parabuild user's uid. / Stupid mistake using os.getuid().. .fixed
by using the pwd module to return the unix username given the userid from os.getuid()
* QAR-623 More single ref attachment awesomeness testing
* Committed temporary fix for running dwell and query-cache on deneb.lindenlab.com, since it's in the DFW colo with the
current asset cluster.
* DEV-15783 Groups not shown in search wont appear in your profile while using webservice
* QAR-642 Even more single ref attachment awesomeness testing
From Branch_1-21-Server (which didn't go directly into release)
* addinng the phputf8 library found from http://phputf8.sourceforge.net/ and liscensed LGPL. For DEV-15202
* Checking in a fix for settle balance portion proc - the event query was moved.
* fix for DEV-15202 - replace non-utf8 with REPLACEMENT CHAR. See jira for more info.
* Checking return value from /proc/vault/charge, must get back a string.
* removed code used for the browser hud AB test.
* Changed TTL from stupid default of 1234 to 5
* DEV-15788 Fixing crashloganalyzer.py cleanup of unparseable crash reports.
* DEV-15737 offline scripted IMs not working inprocess_im_using_ws
Merge conflict resolutions/fixes include:
* Addition of indra/test/llstring_tut.cpp to indra/test/test.vcproj migrated to CMakeLists.txt
* Changes to BuildParams, scripts/automated_build_scripts/* reviewed w/ cg
* Changes to deploy scripts (scripts/farm, install_indra.py, farm_deploy) based on the 1.22 changes except for mkpersist
dir addition (retained from release)
* Changes to scripts/crash_report/crashloganalyzer.py retained from 1.22, per Mani
* scripts/generate_indra_xml.py, etc/services-station.dtd, indra/newsim/llagentinfo.cpp analyzed carefully by josh
* indra/llcommon/llstring.h required fix for client build ("" --> std::basic_string<T>()) in LLStringBase<T> initializer
* indra/llphysics/abstract/llphysicsshape.h #include syntax changed from <llmath/llvolume.h> to "llvolume.h"
Psst, don't tell anyone, but the dataserver-is-deprecated
QAR-242 merge of maintenance-5 (QAR-203)
* DEV-6548 Copy To Inventory fail to execute without any output feedback when Notecard has changes but not saved
* DEV-7600 Deleting someone else's object in god mode crashes sim
* DEV-5329 LLSD parsers should determine and set maximum parse sizes
* DEV-7473 Resolve instant message crash report
* DEV-2904 Presence Issues not (apparently) caused by scripted attachments
* DEV-7083 Investigate Null Folder IDs Bug that caused 470K inventory items with Null Folder IDS on the Grid
* DEV-2865 Textures/Snapshots in a notecard are opened again when you click copy to inventory.
* DEV-6612 VWR-3290: Linux scons build script doesn't work with distcc
* DEV-8002 c++ llsd notation parser accepts malformed data
* DEV-8001 c++ xml parse returns wrong number of elements parsed
* DEV-8089 Double delete in statc structured data parse functions
* DEV-5326 Any viewer can request presence information for any agent
* DEV-2378 python service builder does not sort query string
* DEV-7872 Block teleport off teen grid sub-estates like Schome Park / Open University
* DEV-4465 Add a "logfile" command line option to the sim to create log files