"DG" == Daniel Glassey writes: >> here's a backtrace from the non-stripped binary:
DG> Thanks. Looks as though it in something happening within the DG> sword library. I haven't got Debian amd64 but I've rebuilt the DG> packages for Ubuntu edgy amd64 and haven't been able to replicate DG> the crash. DG> What modules (texts, commentaries etc) do you have installed. DG> Also, could you send your ~/.kde/share/config/bibletimerc i did some more debugging: i've built the libsword6 package without optimization, and re-built bibletime, statically linked to libsword.a i have the KJV module installed in my ~/.sword directory, as well as the sword-text-kjv package. if you will do the same, you hopefully should be able to reproduce the problem. it doesn't appear to be amd64 specific. the problematic code, where the crash occurs, is in sword-1.5.9/src/mgr/swmgr.cpp, in function SWMgr::augmentModules: 607: if (multiMod) { 608: // fix config's Section names to rename modules which are available more than once 609: // find out which sections are in both config objects 610: // inserting all configs first is not good because that overwrites old keys and new modules would share the same config 611: for (SectionMap::iterator it = config->Sections.begin(); it != config->Sections.end(); ++it) { 612: if (saveConfig->Sections.find( (*it).first ) != saveConfig->Sections.end()) { //if the new section is already present rename it 613: ConfigEntMap entMap((*it).second); 614: 615: SWBuf name; 616: int i = 1; 617: do { //module name already used? 618: name.setFormatted("%s_%d", (*it).first.c_str(), i); 619: i++; 620: } while (config->Sections.find(name) != config->Sections.end()); 621: 622: config->Sections.insert(SectionMap::value_type(name, entMap) ); 623: config->Sections.erase(it); 624: } 625: } 626: } (i've inserted line numbers for convenience). since i have two KJV modules (one coming from the debian package, and one installed in my ~/.sword directory), and multiMod passed to augmentModules is true, this code gets executed. here's how i see the crash in gdb: ======================================================================= (gdb) br swmgr.cpp:623 Breakpoint 1 at 0x54c202: file ../src/mgr/swmgr.cpp, line 623. (gdb) r Starting program: /home/vvv/src/bibletime/bibletime/bibletime-1.6.2.dfsg/build-tree/bibletime-1.6.2.dfsg/bibletime/bibletime [Thread debugging using libthread_db enabled] [New Thread 47596797739536 (LWP 26511)] kbuildsycoca running... DCOP Cleaning up dead connections. [Switching to Thread 47596797739536 (LWP 26511)] Breakpoint 1, sword::SWMgr::augmentModules (this=0x1210d30, ipath=0x1018e30 "/home/vvv/.sword/", multiMod=true) at ../src/mgr/swmgr.cpp:623 623 config->Sections.erase(it); (gdb) n 611 for (SectionMap::iterator it = config->Sections.begin(); it != config->Sections.end(); ++it) { (gdb) n 612 if (saveConfig->Sections.find( (*it).first ) != saveConfig->Sections.end()) { //if the new section is already present rename it (gdb) n Program received signal SIGSEGV, Segmentation fault. 0x00002b49fdd8efd2 in strcmp () from /lib/libc.so.6 ======================================================================= the crash occurs on the line 612, because the statement on the line 623 apparently makes (*it) invalid. i've put more verbose gdb output below, where i printed the value of *it on each of the steps. i was apparently able to work-around the bug by entering "print it++" in gdb when a breakpoint 623 is reached. continuing after that, i get bibletime run without a crash. i also have other duplicated modules installed, such as the StrongsGreek (in both ~/.sword and via the sword-dict-strongs-greek package), but apparently only the first time when line 623 gets executed causes garbage in *it - i don't have to run "print it++" to avoid a crash for other duplicated modules. Best, v. ======================================================================= (gdb) br swmgr.cpp:623 Breakpoint 1 at 0x54c202: file ../src/mgr/swmgr.cpp, line 623. (gdb) r Starting program: /home/vvv/src/bibletime/bibletime/bibletime-1.6.2.dfsg/build-tree/bibletime-1.6.2.dfsg/bibletime/bibletime [Thread debugging using libthread_db enabled] [New Thread 47292642247184 (LWP 26484)] kbuildsycoca running... [Switching to Thread 47292642247184 (LWP 26484)] Breakpoint 1, sword::SWMgr::augmentModules (this=0x1210d30, ipath=0x1018e30 "/home/vvv/.sword/", multiMod=true) at ../src/mgr/swmgr.cpp:623 623 config->Sections.erase(it); (gdb) print *it $1 = ( class std::pair<const sword::SWBuf,sword::multimapwithdefault<sword::SWBuf, sword::SWBuf, std::less<sword::SWBuf> > > &) @0x13cd3a0: {first = { buf = 0x13ccfa0 "KJV", end = 0x13ccfa3 "", endAlloc = 0x13cd023 "\001", fillByte = 32 ' ', allocSize = 132, static nullStr = 0x5eae25 "", static junkBuf = "KJV_1\000hare/sword/modules/texts/rawtext/web/nt\000vss\000zv\000strongshebrew.dat", '\0' <repeats 8120 times>}, second = {<std::multimap<sword::SWBuf,sword::SWBuf,std::less<sword::SWBuf>,std::allocator<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {_M_t = { _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x13c6a30, _M_left = 0x13c98f0, _M_right = 0x13c8ae0}, _M_node_count = 27}}}, <No data fields>}} (gdb) n 611 for (SectionMap::iterator it = config->Sections.begin(); it != config->Sections.end(); ++it) { (gdb) print *it $2 = ( class std::pair<const sword::SWBuf,sword::multimapwithdefault<sword::SWBuf, sword::SWBuf, std::less<sword::SWBuf> > > &) @0x13cd3a0: {first = { buf = 0x13ccfa0 "`\230<\001", end = 0x13ccfa3 "\001", endAlloc = 0x13cd023 "\001", fillByte = 32 ' ', allocSize = 132, static nullStr = 0x5eae25 "", static junkBuf = "KJV_1\000hare/sword/modules/texts/rawtext/web/nt\000vss\000zv\000strongshebrew.dat", '\0' <repeats 8120 times>}, second = {<std::multimap<sword::SWBuf,sword::SWBuf,std::less<sword::SWBuf>,std::allocator<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {_M_t = { _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x13c6a30, _M_left = 0x13c98f0, _M_right = 0x13c8ae0}, _M_node_count = 27}}}, <No data fields>}} (gdb) n 612 if (saveConfig->Sections.find( (*it).first ) != saveConfig->Sections.end()) { //if the new section is already present rename it (gdb) print *it $3 = ( class std::pair<const sword::SWBuf,sword::multimapwithdefault<sword::SWBuf, sword::SWBuf, std::less<sword::SWBuf> > > &) @0xc33140: {first = { buf = 0x6e6f <Address 0x6e6f out of bounds>, end = 0x5d0 <Address 0x5d0 out of bounds>, endAlloc = 0x5d0 <Address 0x5d0 out of bounds>, fillByte = 0 '\0', allocSize = 0, static nullStr = 0x5eae25 "", static junkBuf = "KJV_1\000hare/sword/modules/texts/rawtext/web/nt\000vss\000zv\000strongshebrew.dat", '\0' <repeats 8120 times>}, second = {<std::multimap<sword::SWBuf,sword::SWBuf,std::less<sword::SWBuf>,std::allocator<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {_M_t = { _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const sword::SWBuf, sword::SWBuf> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = 4, _M_parent = 0x2e000018, _M_left = 0x2806e2b3, _M_right = 0x6}, _M_node_count = 198340247576}}}, <No data fields>}} (gdb) n Program received signal SIGSEGV, Segmentation fault. 0x00002b032cc46fd2 in strcmp () from /lib/libc.so.6 ======================================================================= -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]