I haven't had too much luck with gdb:
0xfec4c554 in ?? () (gdb) cont Continuing.
Program received signal SIGSEGV, Segmentation fault. 0xfebd710c in ?? () (gdb) bt full #0 0xfebd710c in ?? () No symbol table info available. (gdb) quit The program is running. Quit anyway (and detach it)? (y or n) y Detaching from program: , process 16400
That's rather strange, as :
root# file /usr/local/dovecot/sbin/dovecot dovecot: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped root# file /usr/local/clucene/lib/lib* /usr/local/clucene/lib/libclucene-core.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped /usr/local/clucene/lib/libclucene-core.so.1: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped /usr/local/clucene/lib/libclucene-core.so.2.3.3.4: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped /usr/local/clucene/lib/libclucene-shared.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped /usr/local/clucene/lib/libclucene-shared.so.1: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped /usr/local/clucene/lib/libclucene-shared.so.2.3.3.4: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped root #
Thus, every binary, or lib, is not stripped.
If I invoke gdb on those binary I can get every simbol: root # gdb /usr/local/dovecot/sbin/dovecot ... SNIP ... (gdb) list 736 "\n", IO_BLOCK_SIZE); 737 } 738 739 int main(int argc, char *argv[]) 740 { 741 struct master_settings *set; 742 const char *error, *doveconf_arg = NULL; 743 failure_callback_t *orig_info_callback, *orig_debug_callback; 744 bool foreground = FALSE, ask_key_pass = FALSE; 745 bool doubleopts[argc];
or even root # gdb /usr/local/clucene/lib/libclucene-core.so ... SNIP ... (gdb) list 1 /*------------------------------------------------------------------------------ 2 * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team 3 * 4 * Distributable under the terms of either the Apache License (Version 2.0) or 5 * the GNU Lesser General Public License, as specified in the COPYING file. 6 ------------------------------------------------------------------------------*/ 7 #include "CLucene/_ApiHeader.h" 8 #include "CLucene/util/Misc.h" 9 10 #include "CLucene/search/Sort.h" (gdb)
Should I compile with -g (and in case, how do I pass this flag to cmake ) ?
Thanks.
Pigi
On Sunday 07 April 2013, Timo Sirainen wrote:
On 5.4.2013, at 22.59, Pigi pigi@frumar.it wrote:
I'm planning to migrate my courier-imap imap server to dovecot, but I'm experiencing a strange issue with fts-lucene plugin.
Basically, every time I start a search, the log starts to write:
Apr 05 19:30:53 indexer: Error: Indexer worker disconnected, discarding 1 requests for XXXXXX Apr 05 19:30:53 indexer-worker(XXXXX): Fatal: master: service(indexer-worker): child 809 killed with signal 11 (core not dumped) Apr 05 19:30:53 imap(XXXXXX): Error: indexer failed to index mailbox INBOX Apr 05 19:30:56 indexer-worker(XXXXX): Error: lucene index /home/XXXXX/Maildir/lucene-indexes: IndexWriter() failed (#1): Lock obtain timed out
When trussing the indexer-worker pid I can see it ends with:
If you can truss it, you can also gdb it, which is much more helpful:
gdb -p <pid of index-worker> cont <make it crash> bt full
527: siginfo: SIGBUS BUS_ADRALN addr=0x005B50BA 527: Received signal #10, SIGBUS [default] 527: siginfo: SIGBUS BUS_ADRALN addr=0x005B50BA
That says it's a SIGBUS, but the Dovecot log said it's a SIGSEGV. Wonder what's the difference, or maybe you're getting both. Anyway I'd guess this is a clucene bug related to CPU alignment with Sparc CPU. gdb would confirm and could help with fixing it.