log
These are notable or amusing bugs and patches I dealt with in the past.
2024
6 Nov: pixman
bug: rvv
riscv64
extension is not fully detected.
31 Oct: swtpm
bug: 32-bit file API use on filesystem with 64-bit inodes.
24 Oct: gcc
bug: -flto
fails on array initializers.
28 Oct: unbound
bug: make --shuffle
found multiple targets rule error.
13 Oct: gcc
bug: false positive warnings on overrides for multiple inheritance.
29 Sep: gcc
bug: coroutine waiter destroyed wait object too early.
18 Sep: nixpkgs
bug: /etc/wpa_supplicant.conf
is zeroed out.
6 Sep: nix
bug: toml
parser changes timestamp parsing/printing rules.
24 Aug: warzone
bug: use-after-free detected by gcc
warning.
24 Aug: diffoscope
bug: crash when attempt to diff a symlink to the directory.
29 July: less
bug: PageUp
/ PageDown
keys don’t work anymore.
16 July: gcc
bug: saturated truncation works incorrectly on bitfields.
4 June: nixpkgs
: stdenv
fails on sourceRoot
with dashes.
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.
2023
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.
2022
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 TEXTREL
s 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.
2021
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.
2020
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.
2019
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
2018
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.
2017
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
.
2016
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.
2015
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
.
2014
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.
2013
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.
2012
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.
2011
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.
2010
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
.
2009
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.
2007
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.