Commit Graph

8 Commits

Author SHA1 Message Date
Matthew Jordan
274a263773 Re-initialize logmsgs mutex upon logger initialization to prevent lock errors
Similar to the patch that moved the fork earlier in the startup sequence to
prevent mutex errors in the recursive mutex surrounding the read/write thread
registration lock, this patch re-initializes the logmsgs mutex.  Part of the
start up sequence before forking the process into the background includes
reading asterisk.conf; this has to occur prior to the call to daemon in order
to read startup parameters.  When reading in a conf file, log statements can
be generated.  Since this can't be avoided, the mutex instead is
re-initialized to ensure a reset of any thread tracking information.

This patch also includes some additional debugging to catch errors when
locking or unlocking the recursive mutex that surrounds locks when the
DEBUG_THREADS build option is enabled.  DO_CRASH or THREAD_CRASH will
cause an abort() if a mutex error is detected.

(issue ASTERISK-19463)
Reported by: mjordan
Tesetd by: mjordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@376586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-22 23:51:02 +00:00
David M. Lee
c977fe4197 Fixes ast_rwlock_timed[rd|wr]lock for BSD and variants.
The original implementations simply wrap pthread functions, which take
absolute time as an argument. The spinlock version for systems without
those functions treated the argument as a delta. This patch fixes the
spinlock version to be consistent with the pthread version.

(closes issue ASTERISK-20240)
Reported by: Egor Gorlin
Patches:
	lock.c.patch uploaded by Egor Gorlin (license 6416)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@371718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-27 16:40:45 +00:00
Kevin P. Fleming
f83d1b98e8 Add support-level indications to many more source files.
Since we now have tools that scan through the source tree looking for files
with specific support levels, we need to ensure that every file that is
a component of a 'core' or 'extended' module (or the main Asterisk binary)
is explicitly marked with its support level. This patch adds support-level
indications to many more source files in tree, but avoids adding them to
third-party libraries that are included in the tree and to source files
that don't end up involved in Asterisk itself.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-15 15:56:08 +00:00
Terry Wilson
8713d9a573 Initialize track pointer
ast_reentrancy_init checks to see if it is NULL before initializing with calloc


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@314358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-20 05:25:15 +00:00
Tilghman Lesher
6be4e4d83c Initialize tracking variable in structure properly. Fixes a memory leak.
(Reported by The_Boy_Wonder on IRC, fixed by me.)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@307142 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-09 05:39:39 +00:00
Tilghman Lesher
fd11f34692 Change mutex tracking so that it only consumes memory in the core mutex object when it's actually being used.
This reduces the overall size of a mutex which was 3016 bytes before this back
down to 216 bytes (this is on 64-bit Linux with a glibc-implemented mutex).
The exactness of the numbers here may vary slightly based upon how mutexes are
implemented on a platform, but the long and short of it is that prior to this
commit, chan_iax2 held down 98MB of memory on a 64-bit system for nothing more
than a table of 32767 locks.  After this commit, the same table occupies a mere
7MB of memory.

(closes issue #18194)
 Reported by: job
 Patches: 
       20110124__issue18194.diff.txt uploaded by tilghman (license 14)
 Tested by: tilghman
 
Review: https://reviewboard.asterisk.org/r/1066


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@304950 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-31 06:41:36 +00:00
Russell Bryant
90ac07ce45 Attempt to fix FreeBSD build problem.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@269569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-09 23:56:08 +00:00
Jason Parker
9e3f5fa6fb Remove ABI differences that occured when compiling with DEBUG_THREADS.
"Bad Things" would happen if Asterisk was compiled with DEBUG_THREADS, but a
loaded module was not (or vice versa).  This also immensely simplifies the
lock code, since there are no longer 2 separate versions of them.

Review: https://reviewboard.asterisk.org/r/508/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@258557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-22 19:08:01 +00:00