Re: notmuch breaks on \. in config file with upgrade from glib2 2.76.1 to 2.76.5

Subject: Re: notmuch breaks on \. in config file with upgrade from glib2 2.76.1 to 2.76.5

Date: Wed, 6 Sep 2023 10:42:09 -0500

To: Michael J Gruber

Cc: notmuch@notmuchmail.org

From: Eric Blake


On Wed, Sep 06, 2023 at 04:37:57PM +0200, Michael J Gruber wrote:
> Hi there
> 
> [snip]
> > Last night, I filed
> > https://bugzilla.redhat.com/show_bug.cgi?id=2237562.  Later, I found
> > this about glib 2.77 introducing regressions:
> > https://bugzilla.redhat.com/show_bug.cgi?id=2225257; looks like Fedora
> > backported enough of that into 2.76.5 to cause similar issues in
> > relation to 2.76.1, even though a patchlevel release of glib shouldn't
> > be changing behaviors.
> 
> Fedora has no related patches in 2.76.5-1 at all (only hmac/eperm).
> So, if that's the same regression as in 2.77 it was introduced
> earlier, and purely in upstream.

In the meantime, I've pinpointed where the problem was introduced in
glib (71b7efd08a on mainline was backported as 3fd1b63453 on glib-2-76
just before 2.76.5 was cut); and they have a patch pending to fix it
which I have now tested:

https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3565

> 
> > I presume that 'notmuch config set' should be the preferred way to
> > modify the config file - but since it IS a human-readable file,
> > notmuch should do a much better job of reporting errors whenever
> > glib's gkeyfile API cannot parse the file (even if that failure to
> > parse is caused by an unintended regression in glib behavior for
> > rejecting something it used to accept).
> 
> Yes. This round of glib2 gave us quite some headaches to get config
> back working at all. The typical response from glib2 upstream was that
> what we called regressions were fixes to wrong behaviour in glib2 and
> that we should not rely on established behaviour (my words) but only
> on the documentation, the latter exposing a sense of humour which I do
> appreciate at times.
> 
> In particular, glib2's read and write results are the authoritative
> answer. And probably the older glib2 was "wrong" in what it accepted
> leniently ... Does notmuch even get the chance to read partially?

GError are intended to be used as recoverable errors - we have every
right to refactor the logic to ignore keys that are unreadable while
still moving forward with the rest of the file, if we want to do
partial reads.  But that's more invasive than the patch I just
proposed, which merely prints the GError message to the user (serves
as a warning to a user that their hand-written invalid escapes are
being accepted anyways with 2.76.1, and gives the user an explanation
why notmuch isn't working with 2.76.5).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org

_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: