Le 21/08/2018 à 21:56, Willy Tarreau a écrit :
On Tue, Aug 21, 2018 at 07:00:39PM +0200, Cyril Bonté wrote:
Le 21/08/2018 à 18:36, Willy Tarreau a écrit :
Cyril,
if you want to test, please be sure to update to at least 1b13bfd as
we've just added another fix on top of this series.
OK, I was performing some tests, I've now updated with this patch.
It looks better as now I don't see anymore hangs, but some issues remain.
OK, FWIW I've finally addressed the remaining potential deadlock causes
that could happen between checks and other operations on a same server
around the rdv point. But your issues seem unrelated.
Ah great !
(...)
OK, that one is my fault, I used a "listen" section for use_backend (maybe
we'll have to secure such configuration error to prevent segfaults).
I don't see how it could be an issue, that's a completely supported
config! You can even have this :
listen a
use_backend b if { prefer_b }
listen b
use_backend a if { prefer_a }
So any reproducer would be interesting.
I could extract this minimal configuration to reproduce the issue:
defaults
mode http
listen proxy1
bind :9001
http-request set-header X-Forwarded-Proto http
http-request capture hdr(X-Forwarded-Proto) len 8
listen proxy2
bind :9002
use_backend proxy1
then, curl http://localhost:9002/ will cause a segfault.
The good news : I kept a configuration with abns, but removed the proxy
protocol. Everything is working as expected. So, the proxy protocol looks
to have a main role in the buffer issue.
Thanks for the diag. I don't remember changing anything around the proxy
protocol, but it's possible that something subtle changed. Also it's not
on the regular send/receive path so maybe I overlooked certain parts and
broke it by accident when changing the buffers.
Same here, if you have a small reproducer it will really help.
I try to find a configuration that could help identify the issue, but
currently I fail (timings seems to have a role). I let you know once I
have a good reproducer.
--
Cyril Bonté