[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