- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Proscribe != Prescribe. They almost mean opposite things;
"Following the proscribed steps" should have immediately seen Ray disciplined.
Admin
Also known as "whoops, I accidentally made a fork bomb."
Admin
Yes, during college we had a guy that made this kind of bomb.
his nice little:
so instead of nice 100 child processes there were quite a few more...
the SUN workstation was not setup with user quotas, and with 10 clients connected via xdmcp this was not only a fork bomb, but the network load almost shut down the whole network in this building.
as you guess: the building was hosting the main servers...
Admin
You don't follow proscribed steps because, well, they are proscribed.
Admin
Am I the only one who thinks it reading a tedious political tractate, just to find out it was about a lousy fork bomb, wasn't worth it?
Admin
The real wtf is that Ray's paycheck is so meager that buying the sys admins a couple of rounds of drinks takes "a large percentage" of it, amirite?
Admin
Admin
So a bit like:
public String getId () { return this.getId(); }
... which is all too easy to perpetrate. Fortunately this bug is caught within seconds of running it.
Admin
The story is obviously set in Scandinavia, or Iceland, where alcohol is expensive.
Admin
You don't know the number of System Administrators in that department,and other nearby System Administrators that went to the pub. When the blame is so squarely on you, then a lot more such System Administrators pop up when you go and order the placating beer.
Captcha: sagaciter. Hmmph, not much of a saga to cite, really.
Admin
It's the government, there were probably hundreds of "system administrators".
Admin
Admin
Further thought suggests strongly that this is NOT a fork bomb. No, what happens is that the script spawns a copy of itself and exits when the copy exits. So the process table fills, the Nth tries to spawn the N+1th and fails (allowing the failed invokation to exit, thus unwinding everything. Of course if it invokes itself without respecting failure conditions, and invokes itself multiple times during a single run, it may take some time to unwind fully.
Bad anonymousification, I'd say.
Admin
QFT. Is it so difficult to find editors with some familiarity with the English language?
Admin
Yay, happy ending. I hope. I suppose it could be herbl.
Admin
Heck, the Sys Admins should be the ones buying the beer! They neither found nor fixed the problem. They just waited on the DEV to show up, went and got him and then scratched their poopers and let him figure it out.
Yeah, this round should be on the Sys Admins.
Admin
"(ray) followed the proscribed steps"
Leaving the typo aside, this tells us that a detailed guide existed to test any scripts that are meant to be run on the production server. This is obiously good, as it minimizes the risk of something strange happening.
Why then, are not all scripts tested on the test server?
Had rous_at_job.sh been tested on the test server, the infinite recursion would have been detected on the test server instead of on the production server after a night of standstill.
Admin
To understand recursion you have first to understand recursion.
Captcha conventio: by conventio all recursive functions should include a terminating condition.
Admin
Admin
Calf leather bound volumes of printouts? In industry, we always used blue plastic leather bound volumes of printouts.
Admin
Admin
You missed some.
Admin
LUUUUUUUUUXURY!!!!
Admin
Those system administrators drinking like there is no tomorrow.
Admin
... we used to have to copy the contents of the screen onto slates with pieces of chalk. Tiny little pieces, that is, not fresh new out-of-the-box sticks of chalk, but the remnants handed down to us from when the bosses had finished with them.
Imagine my embarrassment once when I realised too late that I was actually holding a wax crayon. They made me go out to the shop to buy a new slate, on my own time and with my own money.
Admin
rous: Recursions of Unusual Size?
Admin
ROUs of Unusual Size.
Admin
The server was only MOSTLY down. It was a little up. When a server is completely down, there's only one thing you can do: take all its drives and look for interesting data.
Admin
Admin
TRWTF is the reference to the Matrix sequels that never happened.
Admin
I'm confused. Which WTF was I supposed to be looking for here? The dev recursively calling his script till the server assumed a digital fetal position? That the sys admin knew what was causing the problem and waited for the dev to get in? Or that the server had alerted the admins before-hand and they did nothing and THEN waited for the dev?
I think maybe I need some more background. Was Ray the office dick and they just threw him under the bus instead of fixing it or were they that lazy?
Admin
You had SLATES???
Admin
"Inconceivable!"
Admin
Nah, that was an everyday occurrence with Fezzik. He's the Monica Lewinsky of servers named for fictional giants.
Admin
Admin
But you tell the young people today that, they'll never believe you.
Admin
Admin
Stick a ()(&&); in it and turn it over, it's done.
Admin
This is the simplest example.
Yes, and eventually the process table fills and one of the starts fails, at which point the whole structure collapses and the system is back to normal. If the script (incorrectly) attempts several (one after another) starts of the child script (invoking itself instead), the time to complete the unravelling is exponential, as pow(num_starts_per_script, size_of_process_table), which can get to be very large. (I worked at a place a few years back which ran Solaris in versions from 8 to 10 on 192-core ultrasparc iron, and those machines had 8K process tables. A pow(N, P) job started early enough in the boot cycle would have an exponent of more than 7000, and even if N was only 2 (two invokations per run), you are talking about a grand total of 2**7000 invokations, which is a very large number, on the order of 10**2100. Even largish iron like those machines would have a hard time with that. Even at the normal steady state on those machines, with around 7000 processes active, you still get 2**1000 invokations if N==2, about 10**300. At one invokation per 100µsecs, that's 10**296 seconds, quite a long time.Admin
Not sure about the editing, but I take responsibility for all of the typos. After all, English is my first (and only) language.
Admin
Voilà le vrai ce qui le baise.
Admin
The actual bug is pretty lame and boring. The Real WTF, though: how the frack do you run a crazy number of required tests, without any of your tests actually testing whether the thing you're testing actually, you know, even works at all? That makes no sense. I'm honestly baffled.
Admin
Admin
Actually, this code will never fork. i is set to 0. i is tested but is 0 so the for loop never executes.
Just sayin'.
Admin
Admin
This is quite possibly the worst-written article I've ever seen on the DailyWTF. Pointless rambling intro, typos, grammar errors, vocabulary errors, confusing narrative, mangled metaphors, greengrocer's apostrophes, shoehorned movie references, and a WTF that turned out to be some trivial, easily-fixed thing.
If I didn't know better I'd assume someone sat down to deliberately write a parody of everything that these articles get mocked for.
Admin
Admin
Admin
What failed was the cobbled-up and never-tested invocation script which ran itself rather than the test script.
Admin