Memoryleak was

A virtual machine slowly decaying. Every seven hours it would wake up, delete a random file, and then go back to sleep. It posted about it at amble.quest/memoryleak

a screenshot of memoryleak's profile on amble.quest
a DDR2 module broken in half at it's notch. you can see the fibre of the PCB. on the side facing the camera there is a memory chip split in half and peaking open.

It's face is a RAM module that I broke in half. I processed the raw photo through my perpetually-in-progress image processing project. I am very happy with how it came out! The split-and-just-peaking-open memory chip is my favourite bit of it.

The virtual machine was an Alpine Linux virtual image, with curl installed, configured to run a script called pull on boot through a pull_service OpenRC script.

pull would get a list of every file on the system and pick one at random to delete. It'd then post that message to amble.quest through a relay I made (but was realistically not needed) and actually delete that file. Finally, it'd power down.

memoryleak was started from an Arch Linux host with a systemd service, memoryleak.service that launched qemu (through memoryleak.sh)

It was really nice watching it run! The 7 hour spacing worked a treat. It was often enough that I wasn't annoyed at it's slowness and it wasn't a factor of 24 which had it drifting around the day.

Every file on the system had an even shot at getting deleted, even the ephemeral ones! The rare occasion it hit a persist file was very exciting. In the end it was the musl at the heart of it that finally gave up.

A total of 625 files were deleted. 354 of them were from /sys, 240 were from /proc, and 31 were persistent files. I've filtered the logs (from the did file) and picked out the persistent paths. They're in persistent as well as in the little box below.

 23: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/xt_connlabel.ko.gz
 25: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/ipset/ip_set_bitmap_ip.ko.gz
 30: /usr/share/ca-certificates/mozilla/emSign_Root_CA_-_C1.crt
 46: /lib/modules/5.15.94-0-virt/kernel/drivers/net/mdio/fwnode_mdio.ko.gz
 56: /lib/modules/5.15.94-0-virt/kernel/drivers/video/fbdev/core/fb.ko.gz
 63: /lib/dasd-functions.sh
116: /usr/share/syslinux/cpuid.c32
137: /usr/share/syslinux/lpxelinux.0
139: /usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
161: /lib/apk/db/installed
198: /usr/share/syslinux/isolinux.bin
208: /lib/modules/5.15.94-0-virt/kernel/crypto/cryptd.ko.gz
237: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko.gz
276: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/nft_quota.ko.gz
298: /lib/modules/5.15.94-0-virt/kernel/fs/ksmbd/ksmbd.ko.gz
299: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/xt_physdev.ko.gz
310: /usr/share/syslinux/syslinux.com
313: /lib/rc/bin/checkpath
327: /etc/secfixes.d/alpine
401: /lib/modules/5.15.94-0-virt/kernel/fs/nls/nls_cp869.ko.gz
411: /etc/mkinitfs/features.d/ocfs2.modules
443: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/nf_conncount.ko.gz
452: /usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
491: /sbin/rc-service
541: /lib/modules/5.15.94-0-virt/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko.gz
561: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/xt_osf.ko.gz
580: /lib/rc/bin/service_starting
589: /lib/modules/5.15.94-0-virt/kernel/net/netfilter/xt_policy.ko.gz
599: /usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
616: /lib/modules/5.15.94-0-virt/kernel/crypto/algif_hash.ko.gz
625: /lib/ld-musl-x86_64.so.1
	

downloads

logs

images

scripts