[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:
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.
OS: Fedora Core 4
Bibletime: 1.5.2 thru CVS HEAD
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
BTW, I'm very thankful for Sword and The CBS! You guys are awesome!
More information about the sword-devel