Hi Thierry,

using lua file and cfg file i provided in my two first mails and lastest 
source, you should get segault when doing :

# curl http://127.0.0.1 -H "X-debug-me: yes"

Regards,

On Tue, 18 Aug 2015 12:33:40 +0200,
Thierry <t...@thierry.1s.fr> wrote :

> Hi,
> 
> How can I reproduce the segfault ?
> 
> Thierry
> 
> On Mon, 17 Aug 2015 15:00:25 +0200
> Marc-Antoine <marc-antoine.b...@ovh.net> wrote:
> 
> > Hi,
> > 
> > Cyril, as you said, if removed "txn:close()" from the lua script, I don't 
> > get segfault anymore.
> > 
> > I noticed that if I removed default_backend line from frontend declaration, 
> > segfault does not happen even with "txn:close()" in lua script :
> > 
> > frontend fe:80
> >         bind 127.0.0.1:80
> >         acl debugme req.hdr_cnt(X-debug-me) ge 1
> >         http-request lua mirror if debugme
> > #        default_backend be
> > 
> > Regards,
> > 
> > On Sat, 15 Aug 2015 23:56:57 +0200,
> > Cyril Bonté <cyril.bo...@free.fr> wrote :
> > 
> > > Hi Marc-Antoine,
> > > 
> > > Le 12/08/2015 19:01, Marc-Antoine a écrit :
> > > > I forgot lua file content :
> > > >
> > > > # cat mylua.lua
> > > > -- a simple mirror web server
> > > > -- it generates a response whose body contains the requests headers
> > > > function mirror(txn)
> > >  > (...)
> > > >          txn:close()
> > > > end
> > > 
> > > This is the call which produce a segfault later, combined with the 
> > > haproxy configuration. I give more details below.
> > > 
> > > > Marc-Antoine <marc-antoine.b...@ovh.net> wrote :
> > >  > (...)
> > > >> defaults
> > > >>          mode    http
> > > >> (...)
> > > >> frontend fe:80
> > > >>          bind 127.0.0.1:80
> > > >>          acl debugme req.hdr_cnt(X-debug-me) ge 1
> > > >>          http-request lua mirror if debugme
> > > >>          default_backend be
> > > 
> > > It looks that currently, mode http doesn't allow a call to txn:close().
> > > To extend the issue, txn:close() won't work for a proxy in HTTP mode for 
> > > both :
> > > http-request lua
> > > tcp-request content lua
> > > 
> > > This is due to the stream processing which still execute some request 
> > > analyzers even if the lua code sends a response and asks to close the 
> > > transaction.
> > > 
> > > I haven't looked at the code enough yet, but maybe we should try to find 
> > > a way to notify haproxy to stop the processing once txn:close() is called.
> > > 
> > > This also explains some other segfaults reported in the past :
> > > http://comments.gmane.org/gmane.comp.web.haproxy/21136
> > > 
> > 
> > 
> > -- 
> > Marc-Antoine
> > 
> 


-- 
Marc-Antoine

Reply via email to