Good catch. Please commit.
On Mon, 2009-09-07 at 09:20 +1200, Angus Salkeld wrote:
> Hi
>
> In logsys there are a number of XYZ_unlocked() functions that are called
> like this:
>
> pthread_mutex_lock (&logsys_config_mutex);
>
> XYZ_unlocked();
>
> pthread_mutex_unlock (&logsys_config_mutex);
>
> The assumption (I assume) is that XYZ_unlocked() should not do any
> (un)locking.
> But _logsys_config_subsys_get_unlocked() unlocks if it finds the subsys.
> This means that there is 1 lock and 2 unlocks.
Yes that's right, most of those _unlocked functions are called as
helpers within other locking functions. A double lock would clearly be
very bad.
>
> This causes a core dump in uClibc. So I have simply removed the unlock.
>
> Regards
> Angus
>
> diff --git a/exec/logsys.c b/exec/logsys.c
> index af72bcf..12c9e5e 100644
> --- a/exec/logsys.c
> +++ b/exec/logsys.c
> @@ -803,7 +803,6 @@ static int _logsys_config_subsys_get_unlocked
> (const char *subsys)
>
> for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
> if (strcmp (logsys_loggers[i].subsys, subsys) == 0) {
> - pthread_mutex_unlock (&logsys_config_mutex);
> return i;
> }
> }
thanks for catching this.
Fabio
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais