Hi, sorry for my misunderstanding of how Sword internals work.
However, the problem is there, it may be something in the decompression algorithm. I'm attaching a valgrind trace of the crash in BibleTime when I try to open the GerHfaLex2002 without a valid key. mg -- no room in outbuffer to during decompression. see zipcomp.cpp ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x599FD16: sword::EntriesBlock::getMetaEntry(int, unsigned long*, unsigned long*) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FFC7: sword::EntriesBlock::getEntrySize(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599EBDA: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F08DF: sword::zLD::getRawEntryBuf() (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59EEC61: sword::SWLD::setPosition(sword::SW_POSITION) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B19E: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x599FD16: sword::EntriesBlock::getMetaEntry(int, unsigned long*, unsigned long*) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FF78: sword::EntriesBlock::getEntry(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599EC0F: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F08DF: sword::zLD::getRawEntryBuf() (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59EEC61: sword::SWLD::setPosition(sword::SW_POSITION) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B19E: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) no room in outbuffer to during decompression. see zipcomp.cpp ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x599FFD0: sword::EntriesBlock::getEntrySize(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599EBDA: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x599FF81: sword::EntriesBlock::getEntry(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599EC0F: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x401D917: realloc (vg_replace_malloc.c:306) ==6598== by 0x599EBF7: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Use of uninitialised value of size 4 ==6598== at 0x401E7AA: strcpy (mac_replace_strmem.c:269) ==6598== by 0x599EC1D: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x401E7B3: strcpy (mac_replace_strmem.c:269) ==6598== by 0x599EC1D: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== ==6598== Conditional jump or move depends on uninitialised value(s) ==6598== at 0x401E7DC: strcpy (mac_replace_strmem.c:69) ==6598== by 0x599EC1D: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== Warning: set address range perms: large range 243302452, a 0, v 1 ==6598== Warning: set address range perms: large range 243302481, a 1, v 1 ==6598== Warning: silly arg (-2147483639) to realloc() ==6598== ==6598== Invalid write of size 1 ==6598== at 0x401E7C0: strcpy (mac_replace_strmem.c:269) ==6598== by 0x599EC1D: sword::zStr::getCompressedText(long, long, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x599FB28: sword::zStr::getText(long, char**, char**) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0644: sword::zLD::getEntry(long) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x59F0824: sword::zLD::increment(int) (in /usr/lib/libsword.so.5.0.0) ==6598== by 0x812B263: CSwordLexiconModuleInfo::entries() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80ACF99: CLexiconKeyChooser::refreshContent() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80AD702: CLexiconKeyChooser::CLexiconKeyChooser(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*, char const*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80A45FE: CKeyChooser::createInstance(QValueList<CSwordModuleInfo*>, CSwordKey*, QWidget*) (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x808785B: CLexiconReadWindow::initView() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x80868AE: CDisplayWindow::init() (in /home/dev/bibletime/bibletime/bibletime) ==6598== by 0x807E11E: BibleTime::createReadDisplayWindow(QValueList<CSwordModuleInfo*>, QString const&) (in /home/dev/bibletime/bibletime/bibletime) ==6598== Address 0x0 is not stack'd, malloc'd or (recently) free'd *** BibleTime got signal 11 (Crashing). Trying to save settings. _______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page