Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Batch fork bomb? [duplicate]

If you run a .bat or .cmd file with %0|%0 inside, your computer starts to use a lot of memory and after several minutes, is restarted. Why does this code block your Windows? And what does this code programmatically do? Could it be considered a "bug"?

like image 717
Doon Avatar asked Nov 18 '12 00:11

Doon


3 Answers

This is the Windows version of a fork bomb.

%0 is the name of the currently executing batch file. A batch file that contains just this line:

%0|%0

Is going to recursively execute itself forever, quickly creating many processes and slowing the system down.

This is not a bug in windows, it is just a very stupid thing to do in a batch file.

like image 175
Jonathon Reinhart Avatar answered Oct 11 '22 03:10

Jonathon Reinhart


This is known as a fork bomb. It keeps splitting itself until there is no option but to restart the system. http://en.wikipedia.org/wiki/Fork_bomb

like image 38
Harrison Dyer Avatar answered Oct 11 '22 03:10

Harrison Dyer


What it is:

%0|%0 is a fork bomb. It will spawn another process using a pipe | which runs a copy of the same program asynchronously. This hogs the CPU and memory, slowing down the system to a near-halt (or even crash the system).

How this works:

%0 refers to the command used to run the current program. For example, script.bat

A pipe | symbol will make the output or result of the first command sequence as the input for the second command sequence. In the case of a fork bomb, there is no output, so it will simply run the second command sequence without any input.

Expanding the example, %0|%0 could mean script.bat|script.bat. This runs itself again, but also creating another process to run the same program again (with no input).

like image 45
Samuel Liew Avatar answered Oct 11 '22 02:10

Samuel Liew