Hello Dmitry,

On Fri, Nov 23, 2012 at 10:01:46AM +0400, Dmitry Sivachenko wrote:
> Hello!
> 
> Every time I do graceful restart (haproxy -sf <oldpid>) for -dev13
> old process dumps core:

Very interesting. I have "only" observed a 100% CPU loop for a few seconds
but not the core.

> Core was generated by `haproxy'.
> Program terminated with signal 11, Segmentation fault.
> #0  0x0000000801567d8c in free () from /lib/libc.so.7
> [New Thread 801c07400 (LWP 205381/haproxy)]
> (gdb) bt
> #0  0x0000000801567d8c in free () from /lib/libc.so.7
> #1  0x0000000000406f64 in deinit () at src/haproxy.c:1108

OK, looks like a double free during deinit. Quite frankly I'm really
bored by this deinit thing. We did this to please valgrind users who
complained that valgrind estimated there were memory leaks, and since
the day we introduced this thing, things got worse and we even caused
segfaults at runtime due to the way we have to manage incomplete structs
upon config errors. I'd really be tempted to definitely remove this
crap and ignore valgrind complaints. It's really a sham when using such
a tool induces bugs in the code as side effects :-(

> #2  0x00000000004078c7 in main (argc=Variable "argc" is not available.
> ) at src/haproxy.c:1519
> (gdb)
> 
> 
> I observe this with several different configs so i think it should be easy to
> reproduce.  I can send coredump+config if necessary.

I'd be interested in knowing if your config enables compression, because
that's an area where we very recently introduced new pools, so there could
be a relation.

Thanks!
Willy


Reply via email to