Subject: bug#42151: [PATCH 0/3] offload to Childhurd fails: setting synchronous mode: locking protocol

From: Jan Nieuwenhuizen <[email-masked]>
Date: Wed, 01 Jul 2020 19:01:08 +0200

Jan (janneke) Nieuwenhuizen writes:

> Maybe we're missing some file_lock patch that Debian has?  Where to look,
> glibc, hurd, ...?  Ideas?

So...I found a way to reproduce the feature/bug: run "pragma synchronous = normal;"
in two instances.

I created a db.sqlite using

    sh -x tests/guix-pack-localstatedir.sh 

(after removing the cleanup trap).

Then, doing

--8<---------------cut here---------------start------------->8---
$ sqlite3 db.sqlite 
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> SELECT * FROM ValidPaths;
1|/gnu/store/pqciscj9304544h3yaqb5m70fggsr293-manual-database|sha256:ccd93bed3a0018f892abc5db92bf182c3e2e986f41a8ded168915b4d9e85fa18|1||2664
2|/gnu/store/mzfkrxd4w8vqrmyrx169wj8wyw7r8i37-bash|sha256:6f887d45fa0f7e59e55c6d7ba86a3d8c35369c7afbb3a5829b8ed226bfef4a66|1||1351880
3|/gnu/store/lgi9x15a0w35mcpd7g1kb9274r6wy4pv-guile-bootstrap-2.0|sha256:dc3e6b577e995c093849454fe4b9c30e87ece6462c54369ff249121f178c5476|1||12718808
4|/gnu/store/6z4h8g6s73zmcn0h6sm63p9d47ih4b63-info-dir|sha256:fd154332e6d35c95f12e41d6168a93945b4737fcbaf734bcaf04ca771a106544|1||432
5|/gnu/store/mj7szx64bdh080rlhzhrvcg6viyba73s-profile|sha256:e32ae4d07fc2298a72e6942f21ba85c0300a84bbaf5794a8c5f0393a8dc9f253|1||2960
sqlite> pragma synchronous = normal;
sqlite>   C-c C-z^Z
[2]+  Stopped                 sqlite3 db.sqlite
[148]18:55:06 janneke@dundal:~/src/guix/master [env]
$ sqlite3 db.sqlite 
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> pragma synchronous = normal;
sqlite> 
--8<---------------cut here---------------end--------------->8---

works nice on GNU/Linux and on current master Childhurd gives

--8<---------------cut here---------------start------------->8---
$ ssh childhurd
Last login: Wed Jul  1 12:08:17 2020 from 10.0.2.2


  This is the GNU Hurd.  Welcome.

root@childhurd ~# sqlite3 db.sqlite 
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> SELECT * FROM ValidPaths;
1|/gnu/store/pqciscj9304544h3yaqb5m70fggsr293-manual-database|sha256:ccd93bed3a0018f892abc5db92bf182c3e2e986f41a8ded168915b4d9e85fa18|1||2664
2|/gnu/store/mzfkrxd4w8vqrmyrx169wj8wyw7r8i37-bash|sha256:6f887d45fa0f7e59e55c6d7ba86a3d8c35369c7afbb3a5829b8ed226bfef4a66|1||1351880
3|/gnu/store/lgi9x15a0w35mcpd7g1kb9274r6wy4pv-guile-bootstrap-2.0|sha256:dc3e6b577e995c093849454fe4b9c30e87ece6462c54369ff249121f178c5476|1||12718808
4|/gnu/store/6z4h8g6s73zmcn0h6sm63p9d47ih4b63-info-dir|sha256:fd154332e6d35c95f12e41d6168a93945b4737fcbaf734bcaf04ca771a106544|1||432
5|/gnu/store/mj7szx64bdh080rlhzhrvcg6viyba73s-profile|sha256:e32ae4d07fc2298a72e6942f21ba85c0300a84bbaf5794a8c5f0393a8dc9f253|1||2960
sqlite> pragma synchronous = normal;
sqlite>   C-c C-z^Z
[1]+  Stopped                 sqlite3 db.sqlite
root@childhurd ~# sqlite3 db.sqlite 
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> pragma synchronous = normal;
Error: locking protocol
sqlite> 
--8<---------------cut here---------------end--------------->8---

On Debian/Hurd (which I hoped had a patched, fixed sqlite3), it doesn't
work at all

--8<---------------cut here---------------start------------->8---
$ ssh hurd
GNU debian 0.9 GNU-Mach 1.8+git20191117-486/Hurd-0.9 i686-AT386


  This is the GNU Hurd.  Welcome.

The Hurd is not Linux.  Make sure to read
http://www.debian.org/ports/hurd/hurd-install
to check out the few things you _need_ to know.
Also check out the FAQ
http://www.gnu.org/software/hurd/faq.html
or its latest version on
http://darnassus.sceen.net/~hurd-web/faq/

To read a short intro on some nice features of the Hurd, just have a look at
the translator_primer file, for example via 'nano translator_primer'
Last login: Wed Jul  1 12:58:44 2020 from 10.0.2.2
janneke@debian:~$ sqlite3 db.sqlite
SQLite version 3.32.3 2020-06-18 14:00:33
Enter ".help" for usage hints.
sqlite> SELECT * FROM ValidPaths;
Error: unable to open database file
sqlite> 
--8<---------------cut here---------------end--------------->8---

So, still a similar question...is the patch simply broken/bitrotted, or
did some file locking change on the Hurd?

Janneke

-- 
Jan Nieuwenhuizen <[email-masked]> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com