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