some more debug output  - put some printfs   — but could not find the reason


lldb /usr/local/bin/haproxy-1.6-dev1-601a4d-55 
(lldb) target create "/usr/local/bin/haproxy-1.6-dev1-601a4d-55"
Current executable set to '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' (x86_64).
(lldb) r -f lua.conf
Process 64937 launched: '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' (x86_64)
::action_http_req_custom lua
::action_http_req_custom [0]  set-method
::action_http_req_custom [1]  set-path
::action_http_req_custom [2]  set-query
::action_http_req_custom [3]  set-uri
::action_http_req_custom [4]  x?
::action_http_req_custom [5]  http_date
Process 64937 stopped
* thread #1: tid = 0xdf2e2c, 0x00007fff87196152 libsystem_c.dylib`strlen + 18, 
queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, 
address=0x10)
    frame #0: 0x00007fff87196152 libsystem_c.dylib`strlen + 18
libsystem_c.dylib`strlen + 18:
-> 0x7fff87196152:  pcmpeqb (%rdi), %xmm0
   0x7fff87196156:  pmovmskb %xmm0, %esi
   0x7fff8719615a:  andq   $0xf, %rcx
   0x7fff8719615e:  orq    $-0x1, %rax
(lldb) bt all
* thread #1: tid = 0xdf2e2c, 0x00007fff87196152 libsystem_c.dylib`strlen + 18, 
queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, 
address=0x10)
  * frame #0: 0x00007fff87196152 libsystem_c.dylib`strlen + 18
    frame #1: 0x00007fff871daf02 libsystem_c.dylib`__vfprintf + 4887
    frame #2: 0x00007fff872039af libsystem_c.dylib`__v2printf + 679
    frame #3: 0x00007fff87203c44 libsystem_c.dylib`__xvprintf + 536
    frame #4: 0x00007fff871d9b72 libsystem_c.dylib`vfprintf_l + 54
    frame #5: 0x00007fff871d2600 libsystem_c.dylib`fprintf + 186
    frame #6: 0x000000010007b32d 
haproxy-1.6-dev1-601a4d-55`action_http_req_custom(kw=0x00007fff5fbfec9e) + 397 
at proto_http.c:11791
    frame #7: 0x000000010007a673 
haproxy-1.6-dev1-601a4d-55`parse_http_req_cond(args=0x00007fff5fbfea88, 
file=0x00007fff5fbffaad, linenum=15, proxy=0x0000000101009400) + 6803 at 
proto_http.c:9306
    frame #8: 0x0000000100027ead 
haproxy-1.6-dev1-601a4d-55`cfg_parse_listen(file=0x00007fff5fbffaad, 
linenum=15, args=0x00007fff5fbfea80, kwm=0) + 18413 at cfgparse.c:3223
    frame #9: 0x0000000100034ad9 
haproxy-1.6-dev1-601a4d-55`readcfgfile(file=0x00007fff5fbffaad) + 2985 at 
cfgparse.c:6325
    frame #10: 0x0000000100002010 haproxy-1.6-dev1-601a4d-55`init(argc=0, 
argv=0x00007fff5fbff918) + 2928 at haproxy.c:719
    frame #11: 0x000000010000498f haproxy-1.6-dev1-601a4d-55`main(argc=3, 
argv=0x00007fff5fbff900) + 47 at haproxy.c:1530
    frame #12: 0x00007fff87e2c5c9 libdyld.dylib`start + 1
(lldb) 



/*
 * Return the struct http_req_action_kw associated to a keyword.
 */
struct http_req_action_kw *action_http_req_custom(const char *kw)
{
        fprintf(stderr,"::action_http_req_custom %s\n",kw);

        if (!kw)
         return NULL;

        if (!LIST_ISEMPTY(&http_req_keywords.list)) {
                struct http_req_action_kw_list *kw_list;
                int i;

                list_for_each_entry(kw_list, &http_req_keywords.list, list) {
                        for (i = 0; kw_list->kw[i].kw != NULL; i++) {
                          if (kw && kw_list &&  kw_list->kw[i].kw) 
{fprintf(stderr,"::action_http_req_custom [%d]  %s\n",i, kw_list->kw[i].kw ? 
kw_list->kw[i].kw:"NULL"); }  <—11791 line 
                                if (kw && kw_list && kw_list->kw[i].kw && 
!strcmp(kw, kw_list->kw[i].kw))
                                        return &kw_list->kw[i];
                        }
                }
        }
        return NULL;
}









> On 03 Apr 2015, at 10:24, gunay arslan <[email protected]> wrote:
> 
> Hope  this can solve your needs
> 
> 
> 
> lldb /usr/local/bin/haproxy-1.6-dev1-601a4d-55 
> (lldb) target create "/usr/local/bin/haproxy-1.6-dev1-601a4d-55"
> Current executable set to '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' 
> (x86_64).
> (lldb) r -f lua.conf
> Process 62345 launched: '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' (x86_64)
> Process 62345 stopped
> * thread #1: tid = 0xdf06eb, 0x00007fff85a91b17 
> libsystem_platform.dylib`_platform_strcmp + 23, queue = 
> 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
>     frame #0: 0x00007fff85a91b17 libsystem_platform.dylib`_platform_strcmp + 
> 23
> libsystem_platform.dylib`_platform_strcmp + 23:
> -> 0x7fff85a91b17:  movzbq (%rsi), %r8
>    0x7fff85a91b1b:  incq   %rdi
>    0x7fff85a91b1e:  incq   %rsi
>    0x7fff85a91b21:  subq   %r8, %rax
> (lldb) bt all
> * thread #1: tid = 0xdf06eb, 0x00007fff85a91b17 
> libsystem_platform.dylib`_platform_strcmp + 23, queue = 
> 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
>   * frame #0: 0x00007fff85a91b17 libsystem_platform.dylib`_platform_strcmp + 
> 23
>     frame #1: 0x000000010007b3e1 
> haproxy-1.6-dev1-601a4d-55`action_http_req_custom(kw=0x00007fff5fbfec9e) + 
> 177 at proto_http.c:11786
>     frame #2: 0x000000010007a803 
> haproxy-1.6-dev1-601a4d-55`parse_http_req_cond(args=0x00007fff5fbfea88, 
> file=0x00007fff5fbffaad, linenum=15, proxy=0x0000000101019000) + 6803 at 
> proto_http.c:9306
>     frame #3: 0x000000010002803d 
> haproxy-1.6-dev1-601a4d-55`cfg_parse_listen(file=0x00007fff5fbffaad, 
> linenum=15, args=0x00007fff5fbfea80, kwm=0) + 18413 at cfgparse.c:3223
>     frame #4: 0x0000000100034c69 
> haproxy-1.6-dev1-601a4d-55`readcfgfile(file=0x00007fff5fbffaad) + 2985 at 
> cfgparse.c:6325
>     frame #5: 0x00000001000021a0 haproxy-1.6-dev1-601a4d-55`init(argc=0, 
> argv=0x00007fff5fbff918) + 2928 at haproxy.c:719
>     frame #6: 0x0000000100004b1f haproxy-1.6-dev1-601a4d-55`main(argc=3, 
> argv=0x00007fff5fbff900) + 47 at haproxy.c:1530
>     frame #7: 0x00007fff87e2c5c9 libdyld.dylib`start + 1
> (lldb) 
> 
> 
> 
> 
>> On 03 Apr 2015, at 10:18, Willy Tarreau <[email protected] <mailto:[email protected]>> 
>> wrote:
>> 
>> Hi Gunay,
>> 
>> On Fri, Apr 03, 2015 at 08:46:50AM +0300, gunay arslan wrote:
>>> HI Cyril
>>> 
>>> my mistake, I forget to mention that before every build I am cleaning - 
>>> make clean
>>> 
>>> and here is the lldb output too
>>> 
>>> 
>>> lldb /usr/local/bin/haproxy-1.6-dev1-601a4d-55 
>>> (lldb) target create "/usr/local/bin/haproxy-1.6-dev1-601a4d-55"
>>> Current executable set to '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' 
>>> (x86_64).
>>> (lldb) r -f lua.conf
>>> Process 57497 launched: '/usr/local/bin/haproxy-1.6-dev1-601a4d-55' (x86_64)
>>> Process 57497 stopped
>>> * thread #1: tid = 0xddc786, 0x00007fff85a91b17 
>>> libsystem_platform.dylib`_platform_strcmp + 23, queue = 
>>> 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
>>>    frame #0: 0x00007fff85a91b17 libsystem_platform.dylib`_platform_strcmp + 
>>> 23
>>> libsystem_platform.dylib`_platform_strcmp + 23:
>>> -> 0x7fff85a91b17:  movzbq (%rsi), %r8
>>>   0x7fff85a91b1b:  incq   %rdi
>>>   0x7fff85a91b1e:  incq   %rsi
>>>   0x7fff85a91b21:  subq   %r8, %rax
>> 
>> Do you have the equivalent of gdb's "bt full" in lldb ?
>> 
>> Here we seem to be seeing that it crashes in strcmp() due to a bad
>> pointer, so now we need to know who passes that bad pointer (I suspect
>> a null check is missing somewhere hence the address 0x10 which probably
>> corresponds to a string after two pointers in a struct).
>> 
>> Regards,
>> Willy
>> 
> 

Reply via email to