Kir,

Thanks for looking into this issue. The ability to merge results from
multiple databases distributed over a network is an awesome feature (and
why I want to use ASPseek). Here's the output from gdb:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 15372)]
0x40033b3c in CTcpDataSource::AddStat (this=0x408fe66c, pquery=0x80b9208
"man",
    ul=0x4005c320 "", np=0, ps=20, urls=2, sites=2, start=@0xbfff9e68,
finish=@0x1,
    spaces=0x80a5e50 "", site=0) at datasource.cpp:328
328             m_socket.SendULONG(finish.tv_sec);
Current language:  auto; currently c++

(gdb) bt full
#0  0x40033b3c in CTcpDataSource::AddStat (this=0x408fe66c,
pquery=0x80b9208 "man",
    ul=0x4005c320 "", np=0, ps=20, urls=2, sites=2, start=@0xbfff9e68,
finish=@0x1,
    spaces=0x80a5e50 "", site=0) at datasource.cpp:328
        this = (CTcpDataSource *) 0x2
        pquery = 0x7158d <Address 0x7158d out of bounds>
        r = (aspseek_request *) 0x804fe3c
        c = (aspseek_client *) 0x804fe00
        proxy = 0x80ac57c " :2/2"
        referer = 0x4205a257 "\213]�\203�\020\211�]��\r", '\220' <repeats
13 times>, "\213\034$�U\211�S\203�\b�����\201�\214`\r"
        addr = 0x7158d <Address 0x7158d out of bounds>
#1  0x40035702 in CMultiTcpDataSource::AddStat (this=0x80b2fd8,
pquery=0x80b9208 "man",
    ul=0x4005c320 "", np=0, ps=20, urls=2, sites=2, start=@0xbfff9e68,
finish=@0x1,
    spaces=0x80a5e50 "", site=0) at /usr/include/g++-3/stl_vector.h:218
        this = (CMultiTcpDataSource *) 0x2
#2  0x4002e763 in show_result (r=0x804fe3c, stime=@0xbfff9e68, ps1=20,
datasource=0x80b2fd8,
    counts=0xbfff9e70) at /usr/include/g++-3/std/bastring.h:343
        nFirst = 20
        urls = (CUrlW *) 0xbfff98a0
        urle = (CUrlW *) 0xbfff98d0
        templ = (CTemplate *) 0x80a5db8
        cgiQuery = (CCgiQueryC &) @0x80a5dc0: {<CCgiQuery> =
{m_query_words = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x80b9208 "man"}, m_results = {static npos = 4294967295,
static nilRep = {len = 0,
        res = 0, ref = 14, selfish = false}, dat = 0x4005fe28 ""},
m_cached = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_include_words = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_exclude_words = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_includeSites = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_excludeSites = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
---Type <return> to continue, or q <return> to quit---
      dat = 0x4005fe28 ""}, m_ul_unescaped = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_tmplp = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_tmpl_url_escaped = {static npos =
4294967295, static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28 ""},
    m_query_url_escaped = {static npos = 4294967295, static nilRep = {len
= 0, res = 0,
        ref = 14, selfish = false}, dat = 0x80b9228 "man"},
m_query_form_escaped = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x80b9248 "man"}, m_qr_form_escaped = {static npos =
4294967295, static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x80b9268 "man"},
    m_qr_url_escaped = {static npos = 4294967295, static nilRep = {len =
0, res = 0, ref = 14,
        selfish = false}, dat = 0x80b9288 "man"}, m_charset = {static npos
= 4294967295,
      static nilRep = {len = 0, res = 0, ref = 14, selfish = false}, dat =
0x4005fe28 ""},
    m_wordform_langs = {static npos = 4294967295, static nilRep = {len =
0, res = 0, ref = 14,
        selfish = false}, dat = 0x4005fe28 ""}, m_format = 0, m_np = 0,
m_ps = 0, m_inres = 0,
    m_posmask = 0, m_take = 0, m_iph = 0, m_xph = 0, m_gr = 1, m_site = 0,
m_search_mode = 0,
    m_sort_by = 0, m_accDist = 0, m_t_from = 0, m_t_to = 0, m_spaces =
{_M_ht = {
        _M_node_allocator = {<No data fields>}, _M_hash = {<No data fields>},
        _M_equals = {<binary_function<long unsigned int,long unsigned
int,bool>> = {<No data fields>}, <No data fields>},
        _M_get_key = {<unary_function<long unsigned int,long unsigned
int>> = {<No data fields>}, <No data fields>},
        _M_buckets = {<_Vector_base<_Hashtable_node<long unsigned int>
*,allocator<long unsigned int> >> =
{<_Vector_alloc_base<_Hashtable_node<long unsigned int>
*,allocator<long unsigned int>,true>> = {_M_start = 0x80b1788,
_M_finish = 0x80b1a8c,
              _M_end_of_storage = 0x80b1a8c}, <No data fields>}, <No data
fields>},
        _M_num_elements = 0}}, m_cspaces = '\0' <repeats 299 times>},
  m_r_str = '\0' <repeats 5119 times>, m_ul_str = '\0' <repeats 5119 times>}
        client = (aspseek_client *) 0x804fe00
        etime = {tv_sec = 1025200872, tv_usec = 543688}
        sitename = '\0' <repeats 129 times>
        this = (CSrcDocumentR *) 0xffffffff
---Type <return> to continue, or q <return> to quit---
        this = (CSrcDocumentR *) 0x1
#3  0x40030761 in aspseek_process_query (r=0x804fe3c) at aspseek.cpp:411
        tm = {tv_sec = 1025200872, tv_usec = 542351}
        ps1 = 20
        counts = {2, 3, 2, 2, 0}
        res = 1083172468
        templ = '\0' <repeats 5119 times>
        query_string = "q=man", '\0' <repeats 8186 times>
        empty = 0
        env = 0x408fe674 "\a"
        stime = {tv_sec = 1025200872, tv_usec = 464269}
        etime = {tv_sec = 0, tv_usec = 0}
        pref = {prps = 0}
        tmpl = (CTemplate *) 0x80a5db8
        cgiQuery = (CCgiQueryC &) @0x80a5dc0: {<CCgiQuery> =
{m_query_words = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x80b9208 "man"}, m_results = {static npos = 4294967295,
static nilRep = {len = 0,
        res = 0, ref = 14, selfish = false}, dat = 0x4005fe28 ""},
m_cached = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_include_words = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_exclude_words = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_includeSites = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_excludeSites = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_ul_unescaped = {static npos = 4294967295,
static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28
""}, m_tmplp = {
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x4005fe28 ""}, m_tmpl_url_escaped = {static npos =
4294967295, static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x4005fe28 ""},
    m_query_url_escaped = {static npos = 4294967295, static nilRep = {len
= 0, res = 0,
        ref = 14, selfish = false}, dat = 0x80b9228 "man"},
m_query_form_escaped = {
---Type <return> to continue, or q <return> to quit---
      static npos = 4294967295, static nilRep = {len = 0, res = 0, ref =
14, selfish = false},
      dat = 0x80b9248 "man"}, m_qr_form_escaped = {static npos =
4294967295, static nilRep = {
        len = 0, res = 0, ref = 14, selfish = false}, dat = 0x80b9268 "man"},
    m_qr_url_escaped = {static npos = 4294967295, static nilRep = {len =
0, res = 0, ref = 14,
        selfish = false}, dat = 0x80b9288 "man"}, m_charset = {static npos
= 4294967295,
      static nilRep = {len = 0, res = 0, ref = 14, selfish = false}, dat =
0x4005fe28 ""},
    m_wordform_langs = {static npos = 4294967295, static nilRep = {len =
0, res = 0, ref = 14,
        selfish = false}, dat = 0x4005fe28 ""}, m_format = 0, m_np = 0,
m_ps = 0, m_inres = 0,
    m_posmask = 0, m_take = 0, m_iph = 0, m_xph = 0, m_gr = 1, m_site = 0,
m_search_mode = 0,
    m_sort_by = 0, m_accDist = 0, m_t_from = 0, m_t_to = 0, m_spaces =
{_M_ht = {
        _M_node_allocator = {<No data fields>}, _M_hash = {<No data fields>},
        _M_equals = {<binary_function<long unsigned int,long unsigned
int,bool>> = {<No data fields>}, <No data fields>},
        _M_get_key = {<unary_function<long unsigned int,long unsigned
int>> = {<No data fields>}, <No data fields>},
        _M_buckets = {<_Vector_base<_Hashtable_node<long unsigned int>
*,allocator<long unsigned int> >> =
{<_Vector_alloc_base<_Hashtable_node<long unsigned int>
*,allocator<long unsigned int>,true>> = {_M_start = 0x80b1788,
_M_finish = 0x80b1a8c,
              _M_end_of_storage = 0x80b1a8c}, <No data fields>}, <No data
fields>},
        _M_num_elements = 0}}, m_cspaces = '\0' <repeats 299 times>},
  m_r_str = '\0' <repeats 5119 times>, m_ul_str = '\0' <repeats 5119 times>}
        datasource = (CRemoteDataSource *) 0x80b2fd8
        con = 1083172468
#4  0x08048f82 in main (argc=2, argv=0xbffffb34) at sc.c:291
        argc = -1073753399
        argv = (char **) 0x408fe674
        templ = "/usr/local/aspseek/etc/s.htm", '\0' <repeats 5091 times>
        env = 0x408fe674 "\a"
#5  0x42017499 in __libc_start_main () from /lib/i686/libc.so.6
No symbol table info available.

> This is very interesting, can you please reproduce the results from the
> command line? This is done in the following way:
>
> $ QUERY_STRING="q=man" ./s.cgi
>
> You should receive the coredump (if not, set your coredump limit using
> 'ulimit -c unlimited', and repeat. Then, run gdb on it:
>
> $ gdb s.cgi core
>
> And sent us output of 'bt full' command.
>
> Alternatively, you can just run s.cgi from inside the gdb.
>
> $ gdb s.cgi
> ....
> (gdb) set env QUERY_STRING=q=man
> (gdb) r
>
> Also, then s.cgi will segfault, run 'bt full'.


Reply via email to