On a FreeBSD 4.3-STABLE system with no configure options:

Program received signal SIGSEGV, Segmentation fault.
0x8080566 in CRanks::LoadRanks (this=0x80e5b10, f=4) at search.cpp:2675
2675                                    if (buf[i] == 0)
(gdb) p i
$1 = 6109
(gdb) p buf[i]
Error accessing memory address 0xbfae808c: Bad address.
(gdb) bt
#0  0x8080566 in CRanks::LoadRanks (this=0x80e5b10, f=4) at search.cpp:2675
#1  0x80808a2 in CRanks::ReLoad (this=0x80e5b10) at search.cpp:2721
#2  0x807c4d5 in CResult::GetFinalResult (this=0x811c380, src=0x811b380, total=555642, 
surls=0x0, slen=0, 
    real=0, gr=1, sortBy=0) at search.cpp:1182
#3  0x808038b in CSearchExpression::GetResult (this=0x811b380, urls=0x80cef2a "", 
site=0, gr=1, sortBy=0, 
    spaces=@0xbfafe99c, res=0xbfafd9c4) at search.cpp:2646
#4  0x8052a8b in processReq1 (ctx=0xbfafeba4) at daemon.cpp:801
#5  0x80537d7 in processReqs (p=0x811c2c0) at daemon.cpp:973
#6  0x28180ab3 in _thread_start () from /usr/lib/libc_r.so.4
#7  0x0 in ?? ()

The thread stack is overflowing in CRanks::LoadRanks(int f) due to

    float buf[0x4000];

This core is very repeatable for me and occurs after an indexing
operation.  I malloced buf taking it off the stack.  Reducing the
size of buf considerably works too but adds about a second to the
first search after an index.

John Capo                               Embedded Hardware/Software Design
IRBS Engineering, Inc.                  Unix/Internet Consulting

Reply via email to