[sword-devel] BibleTime or Sword crashes on startup on Mac OS X

Alfonso Guerra sword-devel@crosswire.org
Sun, 9 Feb 2003 05:15:51 -0600


I'm trying to get bibletime 1.3beta4 to run on Mac OS X using Apple's  
X11 with KDE 3.1. Here's a dump of what happens under gdb:

GNU gdb 5.3-20021014 (Apple version gdb-250) (Sat Dec  7 02:14:27 GMT  
2002)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and  
you are
welcome to change it and/or distribute copies of it under certain  
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for  
details.
This GDB was configured as "powerpc-apple-macos10".
Reading symbols for shared libraries ........ done
(gdb) run
Starting program: /sw/bin/bibletime
[Switching to process 3295 thread 0xb03]
Reading symbols for shared libraries . done
Reading symbols for shared libraries  
........................................................................ 
.......... done

Program received signal SIGABRT, Aborted.
0x9001b52c in kill ()
(gdb) bt
#0  0x9001b52c in kill ()
#1  0x9005ceec in abort ()
#2  0x027b6ff0 in __cxxabiv1::__terminate(void (*)()) ()
#3  0x027b705c in std::terminate() ()
#4  0x027b7a8c in __cxa_throw ()
#5  0x027b6840 in std::__throw_logic_error(char const*) ()
#6  0x027b6518 in char* std::string::_S_construct<char const*>(char  
const*, char const*, std::allocator<char> const&,  
std::forward_iterator_tag) ()
#7  0x027b3164 in std::string::string(char const*, std::allocator<char>  
const&) ()
#8  0x0277f3ac in sword::LocaleMgr::getLocale(char const*)  
(this=0x27f9de4, name=0x0) at  
/usr/include/gcc/darwin/3.1/g++-v3/bits/stl_alloc.h:630
#9  0x0276b2ec in sword::VerseKey::setLocale(char const*)  
(this=0x10696c, name=0x0) at ../src/keys/versekey.cpp:159
#10 0x0276ae8c in sword::VerseKey::VerseKey(char const*)  
(this=0x10696c, ikey=0x0) at ../src/keys/versekey.cpp:91
#11 0x000e34bc in __static_initialization_and_destruction_0(int, int) ()
#12 0x8fe16594 in __dyld_call_module_initializers_for_objects ()
#13 0x8fe160a0 in __dyld_call_module_initializers ()
#14 0x8fe133ac in __dyld__dyld_make_delayed_module_initializer_calls ()
#15 0x00002598 in _call_mod_init_funcs () at  
/SourceCache/Csu/Csu-45/crt.c:299
#16 0x00002480 in _start (argc=1, argv=0xbffffaac, envp=0xbffffab4) at  
/SourceCache/Csu/Csu-45/crt.c:217
#17 0x000023e0 in start ()
(gdb) list sword::VerseKey::setLocale
141
142             --instance;
143     }
144
145
146     void VerseKey::setLocale(const char *name) {
147             char *BMAX;
148             struct sbook **books;
149             bool useCache = false;
150
(gdb)
151             if (localeCache.name)
152                     useCache = (!strcmp(localeCache.name, name));
153
154             if (!useCache)  {       // if we're setting params for  
a new locale
155                     stdstr(&(localeCache.name), name);
156                     localeCache.abbrevsCnt = 0;
157             }
158
159             SWLocale *locale = (useCache) ? localeCache.locale :  
LocaleMgr::systemLocaleMgr.getLocale(name);
160             localeCache.locale = locale;
(gdb)
161
162             if (locale) {
163                     locale->getBooks(&BMAX, &books);
164                     setBooks(BMAX, books);
165                     setBookAbbrevs(locale->getBookAbbrevs(),  
localeCache.abbrevsCnt);
166                     localeCache.abbrevsCnt = abbrevsCnt;
167             }
168             else {
169                     setBooks(builtin_BMAX, builtin_books);
170                     setBookAbbrevs(builtin_abbrevs,  
localeCache.abbrevsCnt);

It's difficult to tell *why* it's failing, but it is. Perhaps the  
globals aren't being initialized in the correct order. In any case, a  
solution or possible causes would be appreciated.

Alfonso