Hi Pavlos,

On Thu, Dec 07, 2017 at 10:18:02PM +0100, Pavlos Parissis wrote:
> On 07/12/2017 07:41 uu, Willy Tarreau wrote:
> > It looks like it doesn't finish to startup in fact. Are you seeing it spin
> > on the CPU maybe ?
> 
> Yes, it does. I am sorry but I didn't notice it

no pb.

> pparissis at poseidonas in ~/repo/haproxy-1.8 on (master u=)
> sudo gdb ./haproxy
> GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
> Copyright (C) 2016 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
> <http://www.gnu.org/software/gdb/documentation/>.
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from ./haproxy...done.
> (gdb) run -f /etc/haproxy/haproxy-ams4-dc.cfg
> Starting program: /home/pparissis/repo/haproxy-1.8/haproxy -f
> /etc/haproxy/haproxy-ams4-dc.cfg
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> [WARNING] 340/221611 (13628) : parsing [/etc/haproxy/haproxy-ams4-dc.cfg:103] 
> : a
> 'http-request' rule placed after a 'use_backend' rule will still be processed 
> before.
> ^C
> Program received signal SIGINT, Interrupt.
> 0x000055555562e302 in register_name (name=0x5555558ee294 "selected_dc_backup",
> len=18, scope=scope@entry=0x7fffffffd83c,
>     alloc=alloc@entry=1, err=0x7fffffffdb28) at src/vars.c:215
> 215                   HA_RWLOCK_WRLOCK(VARS_LOCK, &var_names_rwlock);

Ah, this looks like a double-lock :-)
CCing Christopher who knows better than me how to track them.

> (gdb) bt full
> #0  0x000055555562e302 in register_name (name=0x5555558ee294 
> "selected_dc_backup",
> len=18, scope=scope@entry=0x7fffffffd83c,
>     alloc=alloc@entry=1, err=0x7fffffffdb28) at src/vars.c:215
>         i = <optimized out>
>         var_names2 = <optimized out>
>         tmp = <optimized out>
>         res = 0x0
> #1  0x000055555562f489 in vars_check_arg (arg=0x5555558ee600, err=<optimized 
> out>)
> at src/vars.c:502
>         name = <optimized out>
>         scope = SCOPE_REQ
>         err = <optimized out>
>         arg = 0x5555558ee600
> #2  0x0000555555609b94 in sample_parse_expr (str=str@entry=0x5555558ee598,
> idx=idx@entry=0x7fffffffd964,
>     file=file@entry=0x5555558df420 "/etc/haproxy/haproxy-ams4-dc.cfg",
> line=line@entry=106, err_msg=err_msg@entry=0x7fffffffdb28,
>     al=al@entry=0x5555558e85d8) at src/sample.c:901
>         begw = <optimized out>
>         endw = 0x5555558df4c2 "req.selected_dc_backup)"
>         endt = 0x5555558df4d8 ")"
>         expr = 0x5555558ee5c0
>         fetch = 0x5555558ade30 <sample_fetch_keywords+16>
>         conv = <optimized out>
>         prev_type = 6
>         fkw = 0x5555558ee2f0 "var"
>         ckw = 0x0
>         err_arg = 1
> #3  0x0000555555630144 in parse_acl_expr (args=args@entry=0x5555558ee598,
> err=err@entry=0x7fffffffdb28, al=al@entry=0x5555558e85d8,
>     file=file@entry=0x5555558df420 "/etc/haproxy/haproxy-ams4-dc.cfg", 
> line=106)
> at src/acl.c:351
>         expr = <optimized out>
>         aclkw = 0x0
>         refflags = <optimized out>
>         patflags = <optimized out>
>         arg = <optimized out>
>         smp = 0x0
>         idx = 0
>         ckw = 0x0
>         begw = <optimized out>
>         endw = <optimized out>
>         endt = <optimized out>
>         cur_type = <optimized out>
>         nbargs = <optimized out>
>         operator = 2
>         op = <optimized out>
>         contain_colon = <optimized out>
>         have_dot = <optimized out>
>         dot = <optimized out>
>         value = 3
>         minor = 40
>         buffer = "\000\000\000\000\000\000\000\000\003\000\000\000\060", 
> '\000'
> <repeats 19 times>, "[\000\000\000n\000\000\000\000"
>         is_loaded = <optimized out>
>         unique_id = <optimized out>
>         error = 0x50 <error: Cannot access memory at address 0x50>
>         ref = <optimized out>
>         pattern_expr = <optimized out>
>         load_as_map = 0
>         acl_conv_found = 0
> #4  0x0000555555630e50 in parse_acl (args=args@entry=0x5555558ee590,
> known_acl=known_acl@entry=0x5555558e6de8,
>     err=err@entry=0x7fffffffdb28, al=al@entry=0x5555558e85d8,
> file=file@entry=0x5555558df420 "/etc/haproxy/haproxy-ams4-dc.cfg",
>     line=line@entry=106) at src/acl.c:725
>         cur_acl = <optimized out>
>         acl_expr = <optimized out>
>         name = <optimized out>
>         pos = <optimized out>
> #5  0x0000555555631293 in parse_acl_cond (args=0x7fffffffdc68,
> known_acl=0x5555558e6de8, pol=<optimized out>,
>     err=err@entry=0x7fffffffdb28, al=al@entry=0x5555558e85d8,
> file=file@entry=0x5555558df420 "/etc/haproxy/haproxy-ams4-dc.cfg",
>     line=106) at src/acl.c:976
>         arg_end = 6
>         args_new = 0x5555558ee590
>         arg = <optimized out>
>         neg = 0
>         word = <optimized out>
>         cur_acl = <optimized out>
>         cur_term = <optimized out>
>         cur_suite = 0x5555558ee450
>         cond = 0x5555558ee400
>         suite_val = 524287
> #6  0x0000555555631611 in build_acl_cond (file=file@entry=0x5555558df420
> "/etc/haproxy/haproxy-ams4-dc.cfg", line=line@entry=106,
>     known_acl=<optimized out>, px=0x5555558e6db0, args=<optimized out>,
> args@entry=0x7fffffffdc60, err=err@entry=0x7fffffffdb28)
>     at src/acl.c:1079
>         pol = <optimized out>
>         cond = 0x0
> #7  0x00005555555a5351 in cfg_parse_listen (file=0x5555558df420
> "/etc/haproxy/haproxy-ams4-dc.cfg", linenum=106,
>     args=0x7fffffffdc50, kwm=<optimized out>) at src/cfgparse.c:3969
>         rule = <optimized out>
>         curproxy = 0x5555558e6db0
>         err = <optimized out>
>         error = 0x5555558dfc60 "\210$\255\373\377\177"
>         rc = 0
>         val = 0
>         err_code = 0
>         cond = 0x0
>         tmplogsrv = <optimized out>
>         errmsg = 0x0
> #8  0x00005555555ad153 in readcfgfile (file=0x5555558df420
> "/etc/haproxy/haproxy-ams4-dc.cfg") at src/cfgparse.c:7431
>         kwm = <optimized out>
>         end = <optimized out>
>         line = <optimized out>
>         dquote = <optimized out>
>         arg = <optimized out>
>         args = {0x5555558df454 "use_backend", 0x5555558df460
> "www.booking.com_http_lhr4", 0x5555558df47a "if",
>           0x5555558df47d "www.booking.com_http_ams4_down", 0x5555558df49c
> "!www.booking.com_http_lhr4_down", 0x5555558df4bc "{",
>           0x5555558df4be "var(req.selected_dc_backup)", 0x5555558df4da "eq",
> 0x5555558df4dd "0", 0x5555558df4df "}",
>           0x5555558df4e0 "" <repeats 55 times>}
>         squote = <optimized out>
>         thisline = 0x5555558df450 "    use_backend"
>         linesize = 2048
>         f = 0x5555558dfc60
>         linenum = <optimized out>
>         err_code = 1
>         cs = 0x5555558d2540
>         pcs = 0x5555558d2540
>         ics = <optimized out>
>         readbytes = <optimized out>
> #9  0x00005555555f056d in init (argc=<optimized out>, argv=<optimized out>) at
> src/haproxy.c:1503
>         ret = <optimized out>
>         arg_mode = <optimized out>
>         tmp = <optimized out>
>         cfg_pidfile = <optimized out>
>         err_code = 0
>         err_msg = 0x0
>         wl = 0x5555558df400
>         progname = 0x7fffffffe4e1 "haproxy"
>         change_dir = <optimized out>
>         px = <optimized out>
>         pcf = <optimized out>
> #10 0x000055555556ddab in main (argc=<optimized out>, argv=0x7fffffffe278) at
> src/haproxy.c:2448
> ---Type <return> to continue, or q <return> to quit---
>         err = <optimized out>
>         retry = <optimized out>
>         limit = {rlim_cur = 140737488347800, rlim_max = 140737488347768}
>         errmsg = 
> "\002\000\000\000\000\000\000\000\003\000\000\000\062\000\000\000
> \000\000\000\000\000\000\000P", '\000' <repeats 15 times>, 
> "\003\000\000\000\060",
> '\000' <repeats 19 times>, "[\000\000\000n", '\000' <repeats 19 times>,
> "w\000\000\000|\000\000\000p/\000"
>         pidfd = -1
> (gdb)
> (gdb)
> 
> I hope it uses useful,

Sure it is! Thanks Pavlos!
Willy

Reply via email to