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
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
- ddr2_closest.png
- ddr2.png (32MB)
- ddr2.nef (16MB)