[sword-devel] Changes not saved to personal commentary - Possible x86-64 bug in Linux (FC4) - Ref. BibleTime

Gabriel M. Beddingfield gabriel at teuton.org
Wed Aug 23 20:19:08 MST 2006


Hi Sword devs!

There's a BibleTime bug report that I think may actually be a Sword bug. 
  However, I don't know enough about Sword to even confirm that it is. 
Would anyone be able to help me at least figure out whose bug this is?

Here's a link to the BibleTime bug report:

http://sourceforge.net/tracker/index.php?func=detail&aid=1255685&group_id=954&atid=100954

Here's a brief summary:

User can write notes to personal commentary, but it's write-once and 
then read only.  When a verse is edited and saved, it appears to save 
with no error.  However, when updating the verse the edits do not 
appear.  Upon inspection, the following anomolies appear:

1. The record files in the module's data directory do not have the
    write flag set.
2. Many records appear to have corrupt filenames (e.g. "??" is one
    file name, "??0000" is another.  Some files have names that are
    7-digit numbers, some have 14-digit numbers.)

We've played with umask settings, user permissions, and install 
locations.  Nothing seems to affect the issue.  AFAIK, nobody can 
reproduce this bug except the user on x86-64.  However, I know of no 
other x86-64 testers.  For all these reasons I think it's an issue with 
libsword on x86-64 Linux.

Vitol statistics:
OS: Fedora Core 4
Hardware:  x86-64
Bibletime:  1.5.2 thru CVS HEAD
Sword:  1.5.8

It would be nice if there was a command-line sort of program that ran 
specific tests on the sword library to test for these sorts of errors 
(thus eliminating BibleTime as the cause).  However, I don't know enough 
of the Sword API to do this effectively.

Any help would be appreciated!

On a realted note.....

When poking around in the code, I found a few related items:

1. The property RawFiles::isWritable() (src/modules/comments/rawfiles/
    rawfiles.cpp) is based on a cached value, and doesn't change
    dynamically if the underlying files happen to change.
    However, this is understandable given the nature
    of *most* Sword modules.

2. The method RawFiles::setEntry() (src/modules/comments/rawfiles/
    rawfiles.cpp) calls FileDesc::write(), which returns the number
    of bytes written or -1 on error.  However, the error condition
    is not checked.  It might be a good idea to check and handle
    that.

BTW, I'm very thankful for Sword and The CBS!  You guys are awesome!

Peace,
Gabriel




More information about the sword-devel mailing list