mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-18 00:30:41 +01:00
Merge branch 'beta' - important mutex bugfix
Conflicts: ChangeLog configure.ac doc/Makefile.am doc/manual.html
This commit is contained in:
commit
93fed4bd30
15
ChangeLog
15
ChangeLog
@ -1,6 +1,7 @@
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.19.10 (rgerhards), 2008-07-??
|
||||
- bugfix: bad memory leak in disk-based queue modes
|
||||
- important queue bugfix from 3.18.1 imported (see below)
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.19.9 (rgerhards), 2008-07-07
|
||||
- added tutorial for creating a TLS-secured syslog infrastructure
|
||||
@ -135,6 +136,20 @@ Version 3.19.0 (rgerhards), 2008-05-06
|
||||
- -c option no longer must be the first option - thanks to varmjofekoj
|
||||
for the patch
|
||||
Version 3.18.0 (rgerhards), 2008-07-??
|
||||
=======
|
||||
Version 3.18.1 (rgerhards), 2008-07-??
|
||||
- bugfix: potential segfault in creating message mutex in non-direct queue
|
||||
mode. rsyslogd segfaults on freeeBSD 7.0 (an potentially other platforms)
|
||||
if an action queue is running in any other mode than non-direct. The
|
||||
same problem can potentially be triggered by some main message queue
|
||||
settings. In any case, it will manifest during rsylog's startup. It is
|
||||
unlikely to happen after a successful startup (the only window of
|
||||
exposure may be a relatively seldom executed action running in queued
|
||||
mode). This has been corrected. Thank to HKS for point out the problem.
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.18.0 (rgerhards), 2008-07-11
|
||||
- begun a new v3-stable based on former 3.17.4 beta plus patches to
|
||||
previous v3-stable
|
||||
- bugfix in RainerScript: syntax error was not always detected
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.17.5 (rgerhards), 2008-06-27
|
||||
|
||||
@ -90,6 +90,12 @@ html_files = \
|
||||
ns_gtls.html \
|
||||
ns_ptcp.html \
|
||||
src/tls_cert.dia \
|
||||
gssapi.html \
|
||||
licensing.html \
|
||||
ommail.html \
|
||||
omrelp.html \
|
||||
status.html \
|
||||
troubleshoot.html \
|
||||
src/classes.dia
|
||||
|
||||
EXTRA_DIST = $(html_files)
|
||||
|
||||
@ -158,14 +158,40 @@ static void MsgLockingDummy(msg_t __attribute__((unused)) *pMsg)
|
||||
* where a message may be accessed by multiple threads. This implementation here
|
||||
* is the version for multiple concurrent acces. It initializes the locking
|
||||
* structures.
|
||||
* TODO: change to an iRet interface! -- rgerhards, 2008-07-14
|
||||
*/
|
||||
static void MsgPrepareEnqueueLockingCase(msg_t *pThis)
|
||||
{
|
||||
int iErr;
|
||||
BEGINfunc
|
||||
assert(pThis != NULL);
|
||||
pthread_mutexattr_settype(&pThis->mutAttr, PTHREAD_MUTEX_RECURSIVE);
|
||||
iErr = pthread_mutexattr_init(&pThis->mutAttr);
|
||||
if(iErr != 0) {
|
||||
dbgprintf("error initializing mutex attribute in %s:%d, trying to continue\n",
|
||||
__FILE__, __LINE__);
|
||||
}
|
||||
iErr = pthread_mutexattr_settype(&pThis->mutAttr, PTHREAD_MUTEX_RECURSIVE);
|
||||
if(iErr != 0) {
|
||||
dbgprintf("ERROR setting mutex attribute to recursive in %s:%d, trying to continue "
|
||||
"but we will probably either abort or hang soon\n",
|
||||
__FILE__, __LINE__);
|
||||
/* TODO: it makes very little sense to continue here,
|
||||
* but it requires an iRet interface to gracefully shut
|
||||
* down. We should do that over time. -- rgerhards, 2008-07-14
|
||||
*/
|
||||
}
|
||||
pthread_mutex_init(&pThis->mut, &pThis->mutAttr);
|
||||
|
||||
/* we do no longer need the attribute. According to the
|
||||
* POSIX spec, we can destroy it without affecting the
|
||||
* initialized mutex (that used the attribute).
|
||||
* rgerhards, 2008-07-14
|
||||
*/
|
||||
pthread_mutexattr_destroy(&pThis->mutAttr);
|
||||
ENDfunc
|
||||
}
|
||||
|
||||
|
||||
/* ... and now the locking and unlocking implementations: */
|
||||
static void MsgLockLockingCase(msg_t *pThis)
|
||||
{
|
||||
@ -200,11 +226,12 @@ static void MsgDeleteMutexLockingCase(msg_t *pThis)
|
||||
*/
|
||||
rsRetVal MsgEnableThreadSafety(void)
|
||||
{
|
||||
DEFiRet;
|
||||
funcLock = MsgLockLockingCase;
|
||||
funcUnlock = MsgUnlockLockingCase;
|
||||
funcMsgPrepareEnqueue = MsgPrepareEnqueueLockingCase;
|
||||
funcDeleteMutex = MsgDeleteMutexLockingCase;
|
||||
return RS_RET_OK;
|
||||
RETiRet;
|
||||
}
|
||||
|
||||
/* end locking functions */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user