Package: sawfish
Version: 1:1.11.90-1.1
Architecture: i386
The i386 version of the 'sawfish' package installs a file called
/usr/lib/i386-linux-gnu/sawfish/DOC, which file(1) thinks is in dbm
format, but which appears to be corrupt in some way, according to more
than one dbm-reading program:
$ file DOC
DOC: GNU dbm 1.x or ndbm database, little endian, old
$ gdbm_dump DOC
gdbm_dump: gdbm_open failed: Unexpected end of file
$ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import anydbm
>>> anydbm.open("DOC")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/anydbm.py", line 85, in open
return mod.open(file, flag, mode)
gdbm.error: Unexpected end of file
The visible effect of this is that sawfish:i386 can fail to bring up its
GUI configuration panel, printing a stack trace into ~/.xsession-errors
along the lines of
Lisp backtrace:
#7 gdbm-open ...
#6 doc-file-ref ...
#5 documentation ...
#4 nokogiri-report-slot ...
#3 nokogiri-report-slots ((introduction introduction-link introduction-edit
introduction-info))
#2 eval ...
#1 user-eval ...
#0 server-eval ...
However this is all fine on amd64. sawfish:amd64 can open its GUI
configurer successfully, and the corresponding file in that package,
namely /usr/lib/x86_64-linux-gnu/sawfish/DOC, seems to be fine:
$ file DOC
DOC: GNU dbm 1.x or ndbm database, little endian, old
$ gdbm_dump DOC | head
# GDBM dump file created by GDBM version 1.14.1. 03/01/2018 on Tue Jun 19
11:42:13 2018
#:version=1.0
#:file=DOC
#:uid=1000,user=simon,gid=1000,group=simon,mode=644
# End of header
#:count=1
# End of data
I did these tests on an amd64 installation, but I don't believe it's due
to any architecture-specific formatting of dbm files (should there be
any), because I get the same results whether I use the gdbm_dump binary
from gdbmtool:i386 or the one from gdbmtool:amd64.
Cheers,
Simon
--
for k in [pow(x,37,0x1a1298d262b49c895d47f) for x in [0x50deb914257022de7fff,
0x213558f2215127d5a2d1, 0x90c99e86d08b91218630, 0x109f3d0cfbf640c0beee7,
0xc83e01379a5fbec5fdd1, 0x19d3d70a8d567e388600e, 0x534e2f6e8a4a33155123]]:
print("".join([chr(32+3*((k>>x)&1))for x in range(79)])) # <[email protected]>