244
Gentoo users be like (sh.itjust.works)
submitted 1 month ago by 0x4E4F to c/[email protected]
you are viewing a single comment's thread
view the rest of the comments
[-] [email protected] 40 points 1 month ago* (last edited 1 month ago)

I believe the left hand is a shell fork-bomb, on the assumption that anything that zany is probably malicious.

And the right hand is a way to tell Make to use up all available system resources:

"-j [jobs]’ ¶
‘--jobs[=jobs]’
Specifies the number of recipes (jobs) to run simultaneously. With no argument, make runs as many recipes simultaneously as possible. If there is more than one ‘-j’ option, the last one is effective. See Parallel Execution, for more information on how recipes are run. Note that this option is ignored on MS-DOS."

Edit: I think the make command is technically only a problem when run for a Makefile that tries to do too many things, and has at least one mistake in dependency controls. So... for every Makefile I ever encountered (or that I ever wrote!)

Yeah. They're the same picture

[-] Voroxpete 26 points 1 month ago* (last edited 1 month ago)

You are correct, left hand is a fork bomb. Specifically, it creates and then runs a function named ":". What this function does is pipe its output into itself while running in a background process, which instantly spawns infinite copies of itself. Technically I believe the : character could be any character as its just a name. The creator just picked a colon for aesthetics.

[-] [email protected] 14 points 1 month ago

I always just kind of glazed over looking at that and just know "it's a fork bomb" and basically what it does

With your explanation, I can now actually understand all the parts and how they work, it actually makes sense

[-] [email protected] 5 points 1 month ago

Now I get why it does what it does and how it works. I never thought that the colon was the variable name but it makes so much sense!

[-] [email protected] 6 points 1 month ago

I think it can also get weird when you call other makefiles, like if you go make -j64 at the top level and that thing goes on to call make on subprojects, that can be a looooot of threads of that -j gets passed down. So even on that 64 core machine, now you have possibly 4096 jobs going, and it surfaces bugs that might not have been a problem when we had 2-4 cores (oh no, make is running 16 jobs at once, the horror).

[-] 0x4E4F 1 points 1 month ago

There could also be other problems, like not being able to assign jobs correctly with that many threads. I've encountered this when assigning more jobs than there are threads on the rig. A lot more, like 2x, 4x the threads available.

[-] [email protected] 4 points 1 month ago

so without an argument to -j the number of concurrent jobs is unbounded???

[-] 0x4E4F 1 points 1 month ago

Yep.

It's a "heck, here's all I got" switch.

Remember, with great power comes great responsibility 😉.

this post was submitted on 19 May 2024
244 points (96.9% liked)

linuxmemes

19733 readers
1599 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS