[neomutt-devel] A Release is Coming!

наб nabijaczleweli at nabijaczleweli.xyz
Thu Sep 21 15:59:29 CEST 2023


On Thu, Sep 21, 2023 at 02:01:21PM +0100, Richard Russon wrote:
> The last release was just over four months ago, and we've not been idle.
> Since then we've made 390 commits (that's 3 per day).
> 
> We've been doing some major refactoring to improve NeoMutt in the long-term,
> we've added some new features and fixed a lot of bugs.  More details soon.
> 
> It's important to iron out any bugs before release, so
> 
> 
>     Please BUILD and TEST Neomutt.  NOW!
> 
> 
> Also, please tell me if you've run the latest NeoMutt. (here on on irc)
bb1d11e0af0de6673030c18f52eca10076d39d89
(with my limited debian-style patchset) works basically fine so far;
the only difference I've noticed is that against previous versions
(20230517+dfsg-0.2~bpo11+1 and all others) the startup time has gone
from "significant" (maybe 1s? it was Fine) to "horrific" (3+s),
with like 2.5s of complete no-output.

Running "strace neomutt" reveals two significant pauses that end in
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, and re-stracing to a file
says
  $ grep clock_nanosleep ss
  clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=999000000}, NULL) = 0
  clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7fffc4e55650) = 0
  clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7fffc4e56a80) = 0

Which isn't... great?
But at least it's easy to kill.

Actually, 
-- >8 --
$ grep -C5 clock_nanosleep ss
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/var/mail/nabijaczleweli", 0x7fffc4e58420, 0) = -1 ENOENT (No such file or directory)
write(1, "\7", 1)                       = 1
newfstatat(AT_FDCWD, "/home/nabijaczleweli/postponed", 0x7fffc4e56b70, 0) = -1 ENOENT (No such file or directory)
write(2, "\33]0;NeoMutt with no messages\7", 29) = 29
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=0, tv_nsec=999000000}, NULL) = 0
write(1, "\33[?12l\33[?25h", 12)        = 12
write(1, "\33[?25l", 6)                 = 6
write(1, "\33[?12l\33[?25h", 12)        = 12
newfstatat(AT_FDCWD, "/home/nabijaczleweli/mail/feeds", {st_mode=S_IFDIR|0755, st_size=7, ...}, 0) = 0
newfstatat(AT_FDCWD, "/home/nabijaczleweli/mail/feeds/cur", {st_mode=S_IFDIR|0775, st_size=1458, ...}, 0) = 0
--
brk(0x55bfd0ed7000)                     = 0x55bfd0ed7000
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e55560, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e55560, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e55560, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e55310, 0) = -1 ENOENT (No such file or directory)
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7fffc4e55650) = 0
recvfrom(4, "\27\3\3\1\n", 5, 0, NULL, NULL) = 5
recvfrom(4, "\306:2\341H\246\274u\264\236i\301w\3269J\31321\35\0\26}\231\201\200+!RL\16\234"..., 266, 0, NULL, NULL) = 266
recvfrom(4, "\27\3\3\1\n", 5, 0, NULL, NULL) = 5
recvfrom(4, "\266\321.\325h\327\221k\242\220\10|\317\261a\352\355sNs\254\34\31\314\274J\252\224Z\206\323d"..., 266, 0, NULL, NULL) = 266
recvfrom(4, "\27\3\3\0\201", 5, 0, NULL, NULL) = 5
--
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e56990, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e56990, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e56990, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/nabijaczleweli/.mutt_certificates", 0x7fffc4e56740, 0) = -1 ENOENT (No such file or directory)
write(1, "\rSSL/TLS connection using TLS1.3"..., 61) = 61
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7fffc4e56a80) = 0
recvfrom(4, "\27\3\3\1\n", 5, 0, NULL, NULL) = 5
recvfrom(4, "\307J2\245M\376[Y\204.Rz\r\1\337P\342(6)\252\345\4\254\334\344\364\317\224}\302b"..., 266, 0, NULL, NULL) = 266
recvfrom(4, "\27\3\3\1\n", 5, 0, NULL, NULL) = 5
recvfrom(4, "\23\216\353\366\25\357s\220\10\251Km\205\234>\33\36\356\254.\327A\274I\215g\303\236\256\277\252;"..., 266, 0, NULL, NULL) = 266
recvfrom(4, "\27\3\3\0\201", 5, 0, NULL, NULL) = 5
-- >8 --
which looks an awful, awful lot like you're sleeping for $sleep_time
when you shouldn't be.

This may also explain why switching accounts takes so long for no reason
(and has done so for a long time), if it just deadass shows
"Connecting..." and then sleeps (instead of connecting).

Setting sleep_time=0 fixes both of these ailments.
Maybe that should be the default.

Or you shouldn't sleep for sleep_time for messages that
don't end up being shown to the user.

Or you shouldn't sleep for sleep_time at all,
and show the message and continue,
but only allow the next one to show up after sleep_time
(and have sleep_time block exiting as well).
Admittedly that would still block, so maybe just don't sleep for
this type of message. Or just put them in a queue so you still get a log of what happened.
Or you get my point, this is unacceptable. It was barely acceptable for
a long time, but knowing it just sleeps constantly for no reason is,
well.

Update: lmfao this also fixes every send operation taking multiple
seconds. I just thought shit was slow for a reason but it ain't!
I don't see why you'd ever want to have sleep_time != 0.
Bewildering.

Update update: holy shit this also makes sync-mailbox be instant instead
of taking Seconds. WHAT!!!!! Why is this allowed! Why is it the
god-forsaken default!

Best,
наб
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mailman.neomutt.org/pipermail/neomutt-devel-neomutt.org/attachments/20230921/f6929592/attachment.sig>


More information about the neomutt-devel mailing list