[syslog-ng] 3.3.0beta1 leaking memeory (Re: syslog-ng 3.3.0beta & ESX crashes)

Balazs Scheidler bazsi at balabit.hu
Mon Aug 1 12:39:54 CEST 2011


Hi,

Thanks for the info, I'll try to look at this today.

On Fri, 2011-07-22 at 14:04 +0200, Gergely Nagy wrote:
> Gergely Nagy <algernon at balabit.hu> writes:
> 
> > Hendrik Visage <hvjunk at gmail.com> writes:
> >
> >>  I've mailed Gergely the Valgrind output to analyze 3.3.0beta1 memory
> >> leak(s), so if anybody else are interested in it, please contact me
> >> for them.
> >
> > I had a little time to look into the memory leak issue, and I can
> > confirm: the leak happens all the time with latest git.
> 
> After a bit of bisecting, this is what i found to be the cause of the
> massive leak:
> 
> b8cc9fe3bb41d862918d9e39b0ded812dd756ef5 is the first bad commit
> commit b8cc9fe3bb41d862918d9e39b0ded812dd756ef5
> Author: Balazs Scheidler <bazsi at balabit.hu>
> Date:   Thu Jul 14 12:26:01 2011 +0200
> 
>     delegate flow-control early-ack decision to destination drivers
>     
>     Sources always expect an acknowledgement for each message they produce.
>     This acknowledgement is usually generated when all the destinations have
>     finished their processing of the given message, unless flow-control
>     is disabled.
>     
>     Earlier the LogMultiplexer object was responsible for ACKing in the name
>     of destinations where flow-control was not desired. This patch changes
>     that and delegates the early-ack (or break-ack) decision to destination
>     drivers, based on the information stored in the LogPathOptions structure,
>     where the user-requested mode of operation is stored.
>     
>     This patch splits the "flow_control" member of the LogPathOptions structure
>     into two:
>     
>       - ack_needed: specifies whether the source still expects an ACK on the
>         current path.
>       - flow_control_requested: specifies whether the user has enabled
>         flow control on the current path.
>     
>     Based on these, the destination driver is able to make a decision when
>     to perform the ACK:
>     
>       - log_msg_break_ack(): is a new function call that can be used to generate
>         the ACK and prepare for _sending_ the same message for further processing.
>       - log_msg_ack(): is the good-old ack generation function that can be
>         used when the processing is finally finished, and no processing is to
>         be done.
>     
>     Signed-off-by: Balazs Scheidler <bazsi at balabit.hu>
> 
> :040000 040000 a26bae67903b4109d7b38fbc7c5189c16cc34537 498a1f804d5f3cc578d4fc0dd3833e9b2088a4f8 M      lib
> :040000 040000 7ee20d0fad233792bc68b1db27e3377a22a21499 14bfecc8d10a9a4a36fbe4f38d68b2cef2f6aa63 M      modules
> :040000 040000 eb95b6f26303ac0e879321b6f4366ff8dae66f69 19c30ee65e21c7ef10148630546658e28ac0f5b9 M      tests
> 
> I'm looking into what exactly this patch does, and where the LogMessage
> freeing should be added.
> 
> Reverting the above patch from git head does, indeed, make the leak go
> away.
> 

-- 
Bazsi




More information about the syslog-ng mailing list