On Thu, Jan 23, 2020 at 11:54:17AM -0800, James Brown wrote:
> Where master == f22758d12af5e9f3919f24bf913b883a62df7d93, the following
> config fails on both linux-glibc and osx:
> 
> global
>     maxconn 1024
> 
> defaults
>     timeout client 9s
>     timeout server 9s
>     timeout connect 1s
> 
> frontend test_fe
>     mode http
>     bind :::9999
>     use_backend test_be
> 
> backend test_be
>     mode http
>     server localhost 127.0.0.1:10000
> 
> Every request crashes immediately before connecting to the backend.

I'm impressed, I'm unable to reproduce it!

$ telnet 0 9999
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
GET / HTTP/1.1

HTTP/1.1 200 OK
connection: close

> Backtrace:
> 
> Program received signal SIGSEGV, Segmentation fault.
> back_handle_st_con (s=0x94abd0) at src/backend.c:1937
> 1937 if (!conn->mux && !(conn->flags & CO_FL_WAIT_XPRT)) {
> (gdb) bt
> #0  back_handle_st_con (s=0x94abd0) at src/backend.c:1937
> #1  0x000000000042ae75 in process_stream (t=0x94b020, context=0x94abd0,
> state=<value optimized out>) at src/stream.c:1662
> #2  0x00000000005083c2 in process_runnable_tasks () at src/task.c:461
> #3  0x00000000004bb36b in run_poll_loop (data=<value optimized out>) at
> src/haproxy.c:2630
> #4  run_thread_poll_loop (data=<value optimized out>) at src/haproxy.c:2783
> #5  0x00000000004bdba5 in main (argc=<value optimized out>, argv=<value
> optimized out>) at src/haproxy.c:3483
> 
> Segfault is on the same line on OS X and Linux.

I'm pretty sure the connection is null (or almost null as derived from
the CS) though that should not happen at this place. I'll have another
look at this one tomorrow. Additionally this "if" block will be entirely
removed :-)  But I really want to understand how we manage to enter there
with an invalid connection.

Thank you!
Willy

Reply via email to