These are notable or amusing bugs and patches I dealt with in the past.


1 June: nixpkgs: gcc.libgcc on musl is not stripped.

14 April: linux bug: eevdf scheduler sometimes crashes kernel.

1 April: nixpkgs: fix pcre2 to enable jit.

14 Mar: gentoo bug: eautoreconf does not handle AC_CONF_AUX_DIR.

9 Mar: nix bug: nix does not handle root flakes.

16 February: waf bug: i686-linux does not fit into 3GB.

30 January: binutils bug: .arch i386 is no accepted by gas anymore.

28 January: nixpkgs: document bootstrap seed update procedure.

13 January: mikmod: “buffer overflow” detected at startup.

13 January: nixpkgs: autoconf: 2.71 -> 2.72 update.


26 December: ofborg: map modified files according to .meta.position.

16 December: iwd: fix data corruption in aarch64.

8 December: libbpf: report nature of ELF section corruption.

3 December: tracker: tracker used invalid code to test strftime() features.

1 December: nixpkgs bug: nixpkgs uses very old libelf library where one would expect elfutils.

28 November: php: Fix build on gcc-14 C11 atomics.

14 November: libglgnd: Enable 64-bit file APIs.

11 November: nixpkgs: Fix broken SUID binary in pam package.

10 November: duperemove: Fix quadratic slowdown for partial mode.

9 November: duperemove: Fix file sharing accounting.

7 November: duperemove: Fix quadratic slowdown of small inline files.

5 November: btrfs-progs: Fix accidental SCAN mapped to FORGET ioctl.

4 November: nixpkgs: one-liner to reduce meld closure.

1 November: duperemove: one-liner to speed deduping up 2x.

31 October: duperemove bug: hang up on 1 million of small files.

23 October: gcc: libgcc: make heap-based trampolines conditional on libc presence.

20 October: acme-rs Fix non-standalone challenge paths.

28 September: gcc: ggc: do not wipe out unrelated data via gt_ggc_rtab.

27 September: gcc: ipa-utils: avoid uninitialized probabilities on ICF.

16 September: nixpkgs: disable bash malloc() implementation.

14 September: nixpkgs: always mangle out __FILE__ paths to shrink closure.

31 July: nixpkgs: fix file corruption caused by parallel strip.

15 March: nixpkgs: enable parallel installs for pa rallel builds.

20 February: libomxil-bellagio: fix stack overread.

5 February: xmms2: fix UPD visualization server on dual-stack IPv6.

11 January: nix-olde: started a new project to find outdated nixpkgs packages.


30 December: xmms2: fix stuck FLAC playback.

1 December: AoC: started participating in Advent of Code. Turned it into rust learning exercise.

13 September: glibc: fix MAKEFLAGS assignment for upcoming make-4.4.

11 September: make: fix --shuffle crash on SECONDEXPANSION prerequisites.

16 August: gcc: add build dependencies on i386-builtin-types.inc. Exposed by make --shuffle.

16 August: gcc: driver: fix environ corruption after putenv().

11 August: nixpkgs: don’t inhibit stripping when debuginfo splitter is enabled.

28 July: nixpkgs: enable stripping of cross-compilers.

27 June: gcc: c++: avoid <memory> poisoning on musl. 25 June: ghc: add missing order-only .hs-boot dependencies.

4 June: make: add --shuffle mode.

4 June: nixpkgs bug: unzip unpacked different files on linux/darwin.

23 May: glibc: fix build against ancient gcc-4.7.

15 April: gcc: gcov-profile: Allow negative counts of indirect calls.

14 April: binutils: m68k fix quadratic slowdown of label alignment check.

7 April: gcc: ia64 libgcc: don’t compile glibc-based unwinder without libc headers.

22 February: nixpkgs: fix crt file poisoning in bootstrap.

20 March: vim: fix tutor parallel install.

12 March: gcc: avoid TEXTRELs in shared library.

17 March: nix: fix nix store gc quadratic behaviour.

13 March: nix: fix nix store gc optimized store.

13 January: rustc bug: lto = "thin" causes bad code generation.


21 November: flatbuffers: fix undefined evaluation order of function parameters.

10 November: nix: fix quadratic slowdown of lookup and deletion of realizations for CA derivations.

7 November: espeak-ng: fix SIGSEGV on parallel builds. Build rules shared temporary file names.

9 September: nixpkgs: add s390x cross-compilation target.

21 August: guix: fix guix pull hang up due to po4a bug.

6 August gcc: c++: fix ptrmemfunc template instantiation.

23 July: linux: mm fix page_poison=1 data corruption. Without the change freeing a page always triggered assertions.

27 June: libffi: configure.ac: add --disable-exec-static-tramp flag.

13 June: ccache bug: PWD=. seems to trigger asserts in ccache.

29 April: linux: mm fix data corruption caused by debug_pagealloc=1. Without the fix zero-initialized pages were returned as 0xaa-initialized.

29 April: linux: mm fix endless recursion tracking page_owner.

29 April: linux: ia64 fix symbolizer crash.

2 April: linux: ia64 fix ptrace() stack pointer fetch.

30 March: linux: hpsa fix ia64 boot failure for unaligned SCSI commands.

12 March: linux: ia64 fix ptrace(PTRACE_SYSCALL_INFO_EXIT) sign.

12 March: linux: ia64 fix tracing of break-based syscalls.

5 February: glibc: nsswitch: return result when nss database is locked.

3 February: mc: fix shadow render crash.

11 January: gcc: fix modref analysis on RVO statements.


6 September: gcc: gcov: fix TOPN streaming from shared libraries.

25 July: gcc: don’t crash on unoptimized lto functions.

21 July: wrote https://wiki.gentoo.org/wiki/Stack_smashing_debugging_guide article to aid in stack smashing debugging.

14 July: gcc: sparc fix PIE destructors.

11 July: glibc: ia64 fix build against -fno-common toolchain.

31 May: proftpd: fix SIGSEGV on pstrcat() call without a sentinel NULL. And a follow up change to turn such bugs into compile-time errors.

21 April: ccache bug: ccache does not handle directories in -fprofile-use=.

15 April: qemu: alpha target fix for epoll_create() emulation.

16 March: ccache bug: another attempt by ccache to delete /dev/null.

18 January: seekwatcher: forked and fixed minor bugs in a project by Chris Mason.

3 January: binutils: ia64 fix for binary ld merge.


25 November: nix-guix-gentoo: moved nix and guix ebuilds to an external overlay.

28 April: ccache bug: ccache tried to rename /dev/null.

27 April: libffi: hppa avoid TEXTREL in .eh_frame section.

20 March: ghc: fix 64-bit comparisons on ppc32.

10 March: linux: tty/vt race condition crash fix write/write race in ioctl(KDSKBSENT) handler


31 Dec: linux: alpha fix page fault handling for r16-r18 registers. Without the change page fault handler corrupted wrong register.

21 September: ski: started the fork of HP’s ski to adapt to modern systems.

3 August: gcc: sh avoid TEXTRELs in PIC code.

16 July: ghc: skip -Bsymbolic on unregisterised targets. This fixed sh4 build on ghc.

19 May: libressl: hppa fix assembly syntax around semicolons.

16 May: goircbot: set bot status before channel joins, not after.

17 February: libffi: ia64 fix small struct return.

11 February: libffi: ia64 fix variadic function closures with FP arguments.


21 December: glibc: m68k fix clobbering a5 in setjmp().

18 December: glibc: mips32 fix clobbering s0 in setjmp().

18 December: glibc: mips64 fix clobbering s0 in setjmp().

17 October: libffi: ia64 unbreak small struct handling.

3 October: fish-shell: fix printf "%o" on big-endian systems.

19 August: pax-utils: fixed crash on ia64 binaries.

18 July: found nettle data corruption on sparc due to reuse of local variable. It was fixed upstream with this commit.

14 July: libunwind: ia64 disable unimplemented dwarf support.

10 July: ruby: ia64: fix garbage collector scanning of RBS area.

24 June: binutils: ia64 fix for strip crash with broken hint.

30 May: openrc: fix buffer overflow in openrc-init.

1 May: linux: ia64 fix module loading on gcc-5.4+.

24 April: ghc: put const objects into .rodata.


2 September: ghc: extend worker/wrapper limit to specializers.

1 September: ghc: restore limit on worker/wrapper transform. Without the change ghc spent a lot of time to generate large slow functions.

30 August: ghc: enable parallel GC scan for large nurseries.

10 March: ghc: fix Float and Double cross-compilation.

6 March: ghc: fix closure alignment on m68k. Without it garbage collector crashed with assertion failures.

6 March: qemu bug: m68k generated invalid TCG.

5 January: gcc: ia64 don’t use dynamic relocations for local symbols.


7 August: mtpfs: open device=0, not a random one.

7 July: ghc: fix wake up on bad file descriptors in select() backend.

23 June: ghc: fix PLT relocation support on powerpc ghci.


14 December: ghc: fix shared library support on ppc.

4 September: ghc: fix code/data pointer type confusion in CMM. Without the change on ia64 function pointers were incorrect due to missing function descriptor indirection.

26 August: ghc: fix large literal emission for unregisterised builds.

28 July: ghc: fix openTempFiles linear slowdown due to predictable temp files.

23 May: ghc: fix CPU hangs of threaded runtime on bad file descriptors. This fixed battery drain by xmobar on my laptop.

19 April: dars: corrupted fetcher due to temp file collision.

7 April: linux: fix crash on thread pool remount.

4 March: lambdabot: add CODEPAGE command.


13 December: cabal: use ByteString instead of String. This allowed me to upload raincat release on hackage.

25 November: trofi.github.io: moved the blog to GitHub pages.

3 July: uselex: started new uselex project and unused code in many projects with it.

13 September: linux: enable -Werror=implicit-int by default.

23 January: ghc: fix cross-compilation of integer-gmp. Instead of runtime-detection of structure layout we now use autoconf macros.


31 October: bdelta: 25% speed up of --all-in-ram option.

29 October: xmms2: fix infinite loop on broken .cue files.

26 September: bdelta: add --all-in-ram option to get 3x speed up.

24 April: linux: btrfs feature to change thread pool sizes.

16 April: linux: btrfs fix for remount data corruption. Without the fix btrfs always triggered restore code if mount -oremount fails for any reason.


16 October: chua: started a toy strange attractor render. My favourite OpenGL app. This allowed me to pass the exam in uni :)

25 August: linux: alpha fix for osf_setsysinfo() obscure interface.

20 May: linux: btrfs performance fix caused by spinning shrinker without a chance of progress.

11 April: linux: btrfs data corruption fix caused by use of memcpy() on overlapping areas.


29 August: ghc: fix ppc crashes on foreign import wrapper.

9 July: ghc: fix ia64 crashes on foreign import wrapper.

9 July: ghc: fix ia64 GC pointer chasing. On ia64 pointers use higher bits of 64-bit pattern which broke garbage collector assumptions.

8 July: ghc: fix alpha build of foreign import wrapper.


20 January: mc: added ebuild.syntax highlighter.

5 January: hichi: started haskell implementation of an Intranet Chat protocol library. I think I managed to implement a minimal bot. But never expanded it.


24 November: valgrind: found a bug in rep lodsb instruction emulation.

4 June: ichatd: started a linux implementation of Intranet Chat. Managed to use it successfully in LAN against Windows clients.