Hi Lukas,

On Wed, Mar 05, 2014 at 07:38:42PM +0100, Lukas Tribus wrote:
> Hi Willy,
> 
> 
> > Chris Allen and Jeff Zellner reported a similar issue at the same
> > time on two different versions : 1.4.20 and 1.5-dev17. The symptom
> > is always the same, haproxy suddenly started to crash under load
> > while it did not in the past.
> >
> > When looking deeper into the traces and core files, it happens that
> > both versions were built with TARGET=generic, so haproxy was using
> > select() to poll for new events.
> >
> > The issue was tracked down to a recent update to glibc which now
> > verifies that the file descriptor number passed to FD_SET/FD_CLR/
> > FD_ISSET is comprised between 0 and FD_SETSIZE-1 (1023) :
> >
> > http://repo.or.cz/w/glibc.git/commitdiff/a0f33f996
> >
> > I believe it was merged into glibc 2.16 and backported in the glibc
> > 2.15 as shipped with Ubuntu 12.04.
> 
> 
> Sorry to wakeup this one year old thread, I just hit a crash while
> playing with older code and want to confirm that its 'only' this
> particular (known) problem I'm hitting, not a hidden bug (or whatever).
> 
> Your description corresponds with my configuration (using select() with
> glibc 2.15 on ubuntu crashing with some load).
> 
> 
> On the terminal I see (which is what confuses a bit):
> *** buffer overflow detected ***: ./haproxy terminated
> 
> and the backtrace looks like this:
> (gdb) backtrace full
> #0  0xb76e2424 in __kernel_vsyscall ()
> No symbol table info available.
> #1  0xb755b1df in raise () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #2  0xb755e825 in abort () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #3  0xb759839a in ?? () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #4  0xb76310e5 in __fortify_fail () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #5  0xb762feba in __chk_fail () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #6  0xb763107a in __fdelt_warn () from /lib/i386-linux-gnu/libc.so.6
> No symbol table info available.
> #7  0x0809ad3f in _do_poll (p=0x80ce0e0, exp=-1820950388) at 
> src/ev_select.c:65
> 
> 
> 
> I'm quite sure its exactly this problem, but I prefer to double check with
> you.

Yes it was the exact same trace I used to get when using select() with
too large file descriptors. I really think that this glibc change will
break a large number of software...

Regards,
Willy


Reply via email to