Hi all,

Man, when did I really screw up the last time? And I thought I had run
all test...

Anyhow, thanks all for helping to solve this issue.

Michael got it right, it is the NDEBUG. But is not the .c file but the
header file that was wrong. The idea is that we have functions only in
debugging mode, because functions make it easier to debug. But they are
slower than macro expansions. So in release mode, the functions are
replace with the mutex calls directly (which, I think, a macros, too).
If I recall it correctly, I screwed up after I created that
optimization.

> > Found the culprit. Patch is attached.
> > Imho calling the define NDEBUG makes the code unnecessarily hard to
> > read (#ifndef NDEBUG ..). I had to stare at the code for a 
> while until
> > I noticed that it was negated one time to often.

The NDEBUG is an assert() inheritance. Assert() uses it to indicate a
release build. I've build on the same tool to avoid introducing another
one. But obviously, it has its drawbacks, too. I think I'll solve that
by adding a comment.

I hope this clarifies. Drop me a note if I got it wrong again or you
have a question ;)

The tarball that is now in the repository should solve the issue. 

Rainer
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog

Reply via email to