Accidentally created my first fork bomb with Claude Code
droppedasbaby.comI appreciate the growth mentality in the use of the word "first" there.
Congratulations! Mine was intentional, back in college, where all PCs had open telnet in order to facilitate cooperation. We discovered it was easy to seize someone's computer for a while, and then watch them look around for the culprit, which we thought was hilarious. Boy were we annoying.
My first was in college on the lab computers, I was like "can I create a pthreads bomb instead to circumvent the fork bomb protections?"
Luckily the head sysadmin knew me and was in the room at the time, and I sheepishly explained by the time I realized it worked it was too late for me to stop it, he seemed understanding, understood it wasn't malicious, and luckily got that what else is a CS department for than for students to learn about this stuff?
How did you not get caught??!?
My first ever fork bomb was in the 90s, running Microsoft own example code for OLE (or was it COM?).
That was a great early lesson to never trust code you read online. Even if it is from Microsoft’s own developer portal.
Care to clarify? Windows doesn't have fork or a fork equivalent...
A fork bomb can refer to any process that spawns multiple recursive child processes. You don't need fork to spawn more copies of yourself, that is merely the classic Unix implementation.
The realization that even badly running code is still faster than the average human is rather terrifying. Lucky you that it hogs so much RAM.
I want to know what's going on under the hood of the /adhd skill. Sounds immensely useful for me.
I'm working on a part 2 with a bit more detail for that skill! It just has to go through a couple more drafts.
I don't use AI for these. My friends edit/give feedback, so the cycle is slow.
And they say you can't learn anything about computers from these bots... I had to learn this lesson from giving a shell account to one of my compatriots. I worked with him on group projects so I trusted him. He installed a fork bomb in his user's cron tab that went off at 3:00 a.m. everyday and I had to wonder why my hand compiled DRI driven screensaver went to a crawl. I did learn the lesson and I did forgive him. But it didn't cost me a couple Grand in API fees.
Wasn't my first, but my first unintentional one was writing multiprocessing code with Python on Windows many years ago. Not sure if this is still true now, but if you didn't wrap your main entrypoint in a if __name__ == "__main__" block, and your code spun up a worker pool, Python would reload your module for every child since Windows doesn't have a fork() for it to use, and they'd all happily rerun the code to create children, and so on.
What was the purpose of having Claude Code spin up two more instances of Claude Code though? What was the intended outcome there?
I don't know about the author, but I recently saw an article where the author of Claude code apparently spins up multiple instances at once (note that it could have just been a marketing ploy to get people to use more tokens)
https://www.xda-developers.com/set-up-claude-code-like-boris...
Just use Git worktrees and a lightweight VM environment (I like macOS native sandbox-exec) and you can spawn as many sessions as you want. I've run upwards of 30 at once on my M2 Pro with no noticeable resource impact.
I would love to know more, but am so ignorant about working with multiple sessions running in parallel that I don't know where to start - do you have a blog or published article to share that might get people like me into a more educated space
Hey! No email yet. I'm not going to sell you anything btw so reach out!
Emails on my profile, I'll run you through it all on a call. No I don't but I really should actually.
I tend to have multiple sessions running when doing stuff with CC. But rarely in the same space / domain. I'll have one working on some programming task, another making changes to my NAS and another doing research for some other topic (most recently networking gear upgrade paths).
I have a `SessionEnd` hook that summarizes the conversation with a bunch of metadata, but it doesn't always fire 'cause of my habits.
So, the `SessionStart` hook was meant to catch any conversation where the `SessionEnd` hook wasn't fired.
Edit: I do realize a batch job is better. That's what I do now.
Exponential productivity gains?;)
In my days nearest thing to a fork bomb used to be call autoexec.bat from autoexec.bat
My first was when I was arguing with the IT guy about local shells on their big iron at Uni.
I told him it was a risk to let dumbasses like us have a shell on his server. He said we couldn't do anything, that they were unprivileged accounts.
"Watch this", says I, as his machine froze.
I got in so much trouble for that. I hope you can't do that kind of thing any more.