A wrote a book on how debuggers work!
It guides you through writing a complete native debugger from scratch.
Available Spring 2025 from @nostarch (probably not with this cover)
Here’s my #mbsync #GCC workaround for #Fedora:
commit ebf6bcea7ebdba15553692777d292e59ec1d5e2e (HEAD -> master)
Author: Jarkko Sakkinen <jarkko@kernel.org>
Date: Thu Aug 1 21:36:37 2024 +0300
work around a GCC-14 optimizer issue
mbsync throws SIGSEGV in sync_opened(). As it turns out for some
reason the second entry in the local array 'boxes' is optimized
out:
(gdb) print boxes
$1 = {0x5555556c4540, <optimized out>}
Fix this by pinning the variable using a dummy inline assembly
statement:
__asm__ __volatile__("" :: "m" (boxes));
This sets an invariant, which should guarantee that the compiler
leaves 'boxes' untouched.
As a comparative measure mbsync was compiled also with clang without the
fix, and the resulting ELF binary does not have this issue.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2302132
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
diff --git a/src/main_sync.c b/src/main_sync.c
index 226e324..afb23ca 100644
--- a/src/main_sync.c
+++ b/src/main_sync.c
@@ -623,6 +623,7 @@ sync_opened( main_vars_t *mvars, int t )
if (!mvars->chanptr->boxlist && mvars->chan->patterns) {
mvars->chanptr->boxlist = 2;
char **boxes[2];
+ __asm__ __volatile__("" :: "m" (boxes));
boxes[F] = filter_boxes( mvars->boxes[F], mvars->chan->boxes[F], mvars->chan->patterns );
boxes[N] = filter_boxes( mvars->boxes[N], mvars->chan->boxes[N], mvars->chan->patterns );
box_ent_t **mboxapp = &mvars->chanptr->boxes;
Also attached to https://bugzilla.redhat.com/show_bug.cgi?id=2302132
I found a modern actively updated alternative for #isync (or #mbsync): #m2sync
It is part of #vomit project: https://sr.ht/~bitfehler/vomit/
Compared to the complexity of ~/.mbsyncrc, my config is now dead simple:
cat .config/vomit/config.toml
[kapsi]
local = "~/.cache/mail/kapsi"
remote = "mail.kapsi.fi:993"
user = "jjs"
pass-cmd = "pass show imap/mail.kapsi.fi"
I love vomit!
The dedicated slab buckets series by @kees has been merged into 6.11.
This change allows putting chosen dynamically-sized slab allocations into separate caches instead of generic kmalloc ones.
Patch: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b32801d1255be1da62ea8134df3ed9f3331fba12
@LWN's overview: https://lwn.net/Articles/965837/
So far, only msg_msg [1] and memdup [2] allocations got their own buckets.
1: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=734bbc1c97ea7e46e0e53b087de16c87c03bd65f
2: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d73778e4b86755d527a0c6b249cde846770b2f66
IP Address: 108.165.96.183
Port: 5900
Location: Boca Raton, Florida 🇺🇸
ASN: AS398395 Dot-Tech LLC
Client Name: wimpywoodpeck
Hostname: None
ComputerNewb ID: 51606348
https://computernewb.com/vncresolver/browse/#id/51606348