[syslog-ng] crash with destination usertty

Bryan Henderson bryanh at giraffe-data.com
Sun Jan 28 03:08:15 CET 2007


I am experiencing an assertion failure when I log to first a usertty
destination, then a file destination.  (In the reverse order, things
seem to be OK.  Logging to two files seems OK).

I did some tracing, and while I got rather lost in the reference
counting and acking logic, I did find out that a call to log_msg_ack()
in afuser_dd_queue() is dropping 2 references to a message when there
apparently aren't 2 to drop, resulting in an eventual attempt to
unreference the message when its reference count is zero, which the
code asserts is impossible.

I then noticed that none of the other af*.c files call log_msg_ack()
at all, and thought maybe that call doesn't belong there.

The message that's triggering the problem is the "syslog-ng starting
up" message.  The reason log_msg_ack() drops two references is that
there are two ack thingies attached to the message: one with a
log_center_ack() callback and one with a log_source_msg_ack()
callback.

I can add more details, such as a config file, if necessary, or do some
more tracing.

-- 
Bryan Henderson                                   San Jose, California


More information about the syslog-ng mailing list