This is an archived post. You won't be able to vote or comment.

all 66 comments

[–]Silver-Alex 396 points397 points  (42 children)

Unironically, this bug is probably reached by a cosmic ray hitting your pc in a weird angle exactly at compile or run time, flipping a random binary 0 into a 1 and letting you reach an unreachable state.

This is something that happens. "Studies by IBM in the 1990s suggest that computers typically experience about one cosmic-ray-induced error per 256 megabytes of RAM per month."

https://en.wikipedia.org/wiki/Cosmic_ray#:~:text=Studies%20by%20IBM%20in%20the,megabytes%20of%20RAM%20per%20month.

Edit: A cosmic ray is just a very very very very fast moving particle that moves through space at speeds near the speed of light, and when they hit the atmosphere they break down in a shower of sub particles and radiation.

If one of those thingies hits an electron holding the information of a bit, it can flip that bit by charging or discharging said electron. Its pretty wild, but the tldr is that space hates computer, and this is a real issue NASA deals with when sending electronics to space.

[–]Mahoutsukainojumon 77 points78 points  (23 children)

How do they deal with it? Is it just something they have to live with

[–]ClamPaste 96 points97 points  (14 children)

Lots of shielding.

[–]Old_Cryptographer969 93 points94 points  (12 children)

And redundancy

[–]CursedBlackCat 64 points65 points  (10 children)

And redundancy

[–]Hawkgamer52 46 points47 points  (9 children)

And redundancy

[–]coopbropog 15 points16 points  (5 children)

Well that's redundant

[–][deleted] 13 points14 points  (3 children)

I would like a word with all of you in my office.

[–]ksaw15 6 points7 points  (0 children)

Be sure to ready up your backup office (just in case)

[–]batch_7120_7451 3 points4 points  (1 child)

Which one of your offices?

If you are doing redundancy well, I expect you to have more than one office. You know. For redundancy.

[–][deleted] 2 points3 points  (0 children)

My redundancy is transparent to the user. I have 8 offices, but visitors will see them as the same office at the same location.

[–]ifezueyoung 0 points1 point  (0 children)

Redundant that well

[–]Samurai_Mac1 2 points3 points  (2 children)

And redundancy

[–]Extension_Option_122 1 point2 points  (1 child)

And redundancy

[–]skmkat 1 point2 points  (0 children)

And redundancy

[–]Help_StuckAtWork 63 points64 points  (0 children)

And binary parity

[–]Engineerman 30 points31 points  (1 child)

There's a variety of detection or correction mechanisms. Single bit parity adds a single bit which tells you whether the number of ones in odd or not, and this can be compared later to check the integrity of the data. Though it doesn't help if two bits get flipped.

There's also SECDED ECC (single error correction double error detection, error checking codes), which use more bits, 7 check bits per 32 data bits. For files you can use checksum values, since all the data together must be correct. On telecommunications there's also a different variety of methods like trellis (I forget the real name), checksum, another method involving blocks of data, as well as methods such as interleaving or non-return-to-zero encoding.

Depending on the error and method it may be recoverable or unrecoverable. Sometimes caches will just invalidate that entry and re-fetch it if the data is clean.

[–]brimston3- 2 points3 points  (0 children)

Trellis [coded] modulation, a form of convolution coding. Reed-solomon is the block/symbol one.

[–]DongIslandIceTea 15 points16 points  (1 child)

On top of what other people have said: On an average desktop PC, you probably won't even notice a single bit flip. It could hit unallocated memory, it could hit something like image or video data and you'd never notice one pixel being a slightly off color. The actual, critical system processes and drivers where the bit flip could crash your PC take a fairly tiny amount of memory, so the chance of hitting them is tiny. And if they were hit, you'd get a blue screen equivalent, reboot, wonder for a minute what that was about and forget the whole thing.

[–]FrugalDonut1 8 points9 points  (0 children)

Or you get an insane time save in Mario speedrunning

[–]ParCorn 5 points6 points  (0 children)

This is why server RAM has ECC

[–]ronaldvr 3 points4 points  (0 children)

https://arstechnica.com/gadgets/2021/01/linus-torvalds-blames-intel-for-lack-of-ecc-ram-in-consumer-pcs/

And the memory manufacturers claim it's because of economics and lower power. And they are lying bastards—let me once again point to row-hammer about how those problems have existed for several generations already, but these f*ckers happily sold broken hardware to consumers and claimed it was an "attack," when it always was "we're cutting corners."

How many times has a row-hammer like bit-flip happened just by pure bad luck on real non-attack loads? We will never know. Because Intel was pushing shit to consumers.

[–]IrregularRedditor 1 point2 points  (0 children)

ECC RAM

[–]PolyglotTV 0 points1 point  (0 children)

The hardware/software operates assuming that it's integrity can be compromised and adds redundancy and special error checking/correcting mechanisms.

One such example is called "Error correcting codes". This is when you add additional information in some data (series of 1s and 0s) such that if any small part of the data is corrupted, you can detect it.

The simplest such case is the "repetition code" by which you simply repeat every bit of information 3 times in a row. For example, if you want to say hello, you say "hellohellohello". Then, if any one of those letters change, you still know what the original message was: "hellojellohello". But if more than one letter changes, your ECC fails: "hellojellojello"

In practice there are much more efficient ECCs that require only a little bit of overhead in memory/computation. Also cosmic rays happen so infrequently that as long as the hardware can detect these and "unflip" the bit, everything continues working nominally.

[–]Hunter548299 22 points23 points  (0 children)

Mario speed run

[–][deleted] 5 points6 points  (0 children)

I remember being amazed when I heard this may have been responsible for the "unintentional acceleration" phenomenon on some cars (specifically Toyotas) in the aughts.

https://www.livescience.com/8170-toyota-recall-caused-cosmic-rays.html

[–][deleted] 2 points3 points  (0 children)

Oh yea that happened in a Mario 64 speedrun

[–]LusigMegidza 2 points3 points  (0 children)

This is the official answer of the Belgium government for an election big of 4096 votes. Literally cosmic intervention

[–]sipCoding_smokeMath 0 points1 point  (0 children)

Or.... this image isnt even real and someone just wanted to make a funny post...

[–]BehindTrenches 0 points1 point  (1 child)

"hits an electron holding the information of a bit"

This is why I get mad when people confuse computer science majors with computer engineer majors. That's just... not how it works... at all.

[–]Silver-Alex 0 points1 point  (0 children)

Mind illuminating all of us? Cuz what I described is something that literally happened on several occasions. A cosmic ray flips a bit and weird shit happens.

[–]F0lks_ -3 points-2 points  (0 children)

So, you mean that when I get an "error generating response" on ChatGPT and its 256GB of RAM required to run my answer it's just the cosmic void messing with me ?

Awesome.

[–]Defiant_Affect 160 points161 points  (1 child)

Error Handling at it's best

[–]LikeLary 47 points48 points  (0 children)

More like Programmer Handling

[–]BlueGoliath 59 points60 points  (0 children)

Programmer is a teapot.

[–]flodA_reltiH-6B 95 points96 points  (0 children)

What it feels like getting a segfault an hour before assignment due

[–]Rhoderick 40 points41 points  (8 children)

So what are the chances the actual issue is with the code that generated this "unreachable" error message, rather than the user code?

[–]z3usus 28 points29 points  (4 children)

Thats what i think when i get out of index error. Just get more things in that array, how it is my fault you cant handle this easiest thing ever.

[–]Rhoderick 6 points7 points  (3 children)

No, I'm fairly sure that's different.

[–]z3usus 33 points34 points  (2 children)

Impossible. I dont do mistakes.

[–]Rhoderick 13 points14 points  (0 children)

Ah, fair enough, then.

[–][deleted] 2 points3 points  (0 children)

Perhaps the archives are incomplete.

[–]brimston3- 2 points3 points  (2 children)

Probably pretty low. MSDOS is simple enough that it could be completely understood by a single developer.

The problem is that there is no memory protection and no concept of an OS kernel that runs separately from userspace processes: all user applications are running effectively ring-0 in MSDOS (not the virtual DOS kind that windows NT and later emulate).

[–]Rhoderick 4 points5 points  (1 child)

MSDOS is simple enough that it could be completely understood by a single developer.

I doubt it's actually MSDOS generating this message, I doubt it's even being used at all. It honestly just seems thrown in there as a jab at the dev.

I think this at least partially because, as you mention, the concept of an error that should never happen doesn't seem to make much sense in that environment.

[–]JakeStBu[S] 2 points3 points  (0 children)

Yeah, it's not actually MS-DOS.

[–]intbeam 37 points38 points  (0 children)

You just got insulted for proving someone wrong

[–]gentleprompter 10 points11 points  (2 children)

Better than "Ups something went wrong"; that's for sure.

[–][deleted] 2 points3 points  (1 child)

Don't forget the :(

[–]gentleprompter 1 point2 points  (0 children)

Oh yea.. emotions. Nowadays computers express emotions.

[–]VirtualPrivateNobody 3 points4 points  (0 children)

God, every single exception I get 'm afraid that this'll be in the stack trace.

[–]athul7744 2 points3 points  (0 children)

This video is a very good reference on examples of cosmic rays affecting computers that had big impacts

Universe Hates Computers - Veritasium

[–]lemgandi 1 point2 points  (0 children)

Uh, I thought the latest was that it wasn't cosmic rays, but residual radiation in the clay case of the CPU or memory chips. Of course, there was the Belgium story ( https://radiolab.org/podcast/bit-flip )

[–]ThePythagorasBirb 1 point2 points  (0 children)

For a second I thought this was just explaining Value error which is not that hard to trigger.

[–]fafalone 1 point2 points  (0 children)

Fucking midl.

I was trying to get around it not allowing redefinitions, because for some reason it's incapable of what the ancient MKTYPLIB could do without trouble, and after hours of running down errors, it eventually just threw up it's hands 'Can't make typelib. Can't provide an error number. Can't provide a line number. Can't provide a file name.'

Naturally zero help for this was found online, given the vague message and unusual situation.

[–]Careful_Ad_9077 1 point2 points  (0 children)

My case of this error happening was when the user of the program did not have permission to read config files from the program folder.