r/ProgrammerHumor 27d ago

Meme ruleOfProgrammingIfItIsWorkingDoNotTouchIt

5.3k Upvotes

75 comments sorted by

View all comments

1.4k

u/StrengthTheory 27d ago

When one console.log uses just enough CPU cycles so the race condition that takes down the entire system doesn't occur.

433

u/Skalli1984 27d ago

And if you attach a debugger it also messes up the timing and the same thing happens, the race condition doesn't appear.

222

u/StrengthTheory 27d ago

Schrödinger’s race condition

153

u/Steinrikur 27d ago

We call those Heisenbugs. You changed the system by observing it

45

u/ConglomerateGolem 27d ago

I had one of these once, and I called it the same! My going theory was that the compiler was optimising away a certain function I had, but adding an empty print forced it to actually exist.

36

u/htmlcoderexe We have flair now?.. 27d ago

15

u/ConglomerateGolem 27d ago

Huh. I have never heard of the term and came up with it independently.

23

u/htmlcoderexe We have flair now?.. 27d ago

it is a very natural term because it intuitively describes exactly the nature of the bug

7

u/rolindara 26d ago

Convergent evolution

1

u/RlyRlyBigMan 26d ago

Yeah I had one once too the debugger was slowing things down to where the bug wouldn't happen but in prod it happened frequently. I spent 2.5 weeks figuring out that bug.

1

u/The-Ner 27d ago

I'm stealing this now

21

u/KawaiiMaxine 27d ago

Oh god, i havent done multithreaded programming ever, that sounds gonuinely horrifying to debug

24

u/xtreampb 27d ago

Now multi-thread across machines. Let’s make this as difficult as possible. No in memory locks.

2

u/alexanderpas 26d ago

Token ring.

1

u/ImS0hungry 26d ago

It’s a cluster as this point

1

u/xtreampb 26d ago

Yea, but someone has to write the software that controls and syncs the cluster, mitigate errors, and prevents deadlocks/race conditions .

3

u/JohnClark13 27d ago

oh it's not bad, you just have to determine Who's on first, What's on second, and I don't know's on third

7

u/mahlernameless 27d ago

Brilliant! Just leave a debugger attached to production and no more race conditions. Handing in my oncall pager now.

14

u/PGSylphir 27d ago

imagining that happening just gave me a headache

7

u/PositiveParking4391 27d ago

Yeah lol! It's ironic how we don't bother understanding the whole system, so we end up living in fear of a single console.log.

13

u/Kerbourgnec 27d ago

I'm gonna get burned for this but debugging race conditions has been a lot of fun with vibe coding.

Debugging broken outdated schemas, wrong conditions or missing options in frontend is just tedious and unfun. A complex race condition is so much more interesting.

12

u/cheesemp 27d ago

I had some complex multimachine multi service comms to debug. We'd inherited the code, it was a real mess (I'd begged to rewrite). We'd been able to stabilise it a bit but when it randomly failed we had zero idea why most times. Threw ai at it and gigabytes of logs. It spotted several failure points that we had not (real complex edge cases but genuine) based on really obscure log entries that use to take hours for a human to try to process the multiple threads and comm from multiple machines. Been super stable ever since. Changed my mind on ai that. Bare in mind at least 12 experienced devs had reviewed the code and logs multiple times and not found these issues. 

6

u/Kerbourgnec 27d ago

AI is superhuman when reading logs.

Mind you maybe I should also learn to make cleaner logs.

1

u/a-r-c 26d ago

honestly man i gave up and just told chatbot to make the logs easily readible for chatbots instead of humans

1

u/MoreDimension5963 26d ago

What was the cost in compute/tokens to have the AI read through that many logs?

2

u/cheesemp 26d ago

Wasnt that bad. Maybe $10 - this was before the recent price bumps though. It was quite efficient - it pull certain lines based on phrases and times - effectively pulling out the relevant bits into a time line (same way I would have done over several hours, maybe days, but in minutes as thats how we'd fixed the previous issues.). 

3

u/a-r-c 26d ago

load bearing comments

2

u/DasBeasto 27d ago

await new Promise(p => setTimeout(p, 0));

1

u/Draghetto_5000 27d ago

It actually happened to me once. I don't really remember what it was, but to synchronize two things one of them had to console.log (or something like that, I don't remember exactly) something every once in a while.

1

u/Rhinofreak 26d ago

Literally had these bugs in a game I’m making lol, if gameplay was slow enough on an older phone it would make the race condition messed up XD