This strange tweet got >25k retweets. The author sounds confident, and he uses lots of hex and jargon. There are red flags though... like what's up with the DEI stuff, and who says "stack trace dump"? Let's take a closer look... 🧵1/n

Jul 20, 2024 · 8:40 PM UTC

This is actually a screenshot of !analyze -v output, I think the author conflated "stack trace" and "minidump". Regardless, he only looks at the decoded exception record and concludes "it was a NULL pointer"...? 🤔 2/n
5
42
2,081
It is a plausible explanation, 0x9c is not NULL, but dereferencing near-NULL addresses can have the same root cause. He explains that the code was reading a field at offset 156 from a NULL object pointer. 3/n
8
30
1
1,573
Well, except... we can see in his screenshot that MSVC generated mov r9d, [r8]? That's really odd... I spend half my life looking at MSVC output, and I would expect to see mov r9d, [r8+0x9c], so what's up with that? 4/n
8
33
7
1,686
Maybe I'm wrong, let's test it in godbolt godbolt.org/z/sdz4PGxxo. Nope, the code doesn't match! The code is either more complicated, or his hypothesis is incorrect. There is a way to check, he could type `u` (unassemble) into kd and examine the surrounding code. 5/n
5
39
1
1,659
He didn't, but we still can! His version of the faulting module has the bytes 45 8b 08 at csagent+0xe35a1, I found that version in VT, and had a look. In fact, there *is* a NULL check (test r8, r8; jz) immediately before the dereference, so his theory is provably *wrong* 🛑 6/n
9
102
29
2,353
This code is reading pointers from a table in a loop, and some are invalid. Perhaps an error parsing a configuration file left some entries uninitialized, and one just happened to be 0x9c? It's just a theory, but at least mine fits the facts😆 7/n
12
43
6
1,825
Here is the same crash seen by Patrick, except he saw the entry 0xffff9c8e00000008a, nowhere near NULL! If this is uninitialized data, perhaps it was okay during testing and that's why CS didn't catch it 🤷‍♂️ 8/n
I don't do Windows but here are some (initial) details about why the CrowdStrike's CSAgent.sys crashed Faulting inst: mov r9d, [r8] R8: unmapped address ...taken from an array of pointers (held in RAX), index RDX (0x14 * 0x8) holds the invalid memory address @_JohnHammond
11
90
8
2,030
It's amusing to me that Patrick (who actually knows what he's doing) realizes this is complicated, so hedged his analysis with "(initial) details"... but this guy just rocks up with "I'm a professional!!" and gets 25k retweets 😆 9/9
87
198
26
5,517
Replying to @taviso
If you notice, he also made a mistake in calculating the offset of the structure, where he shifts the first field by 4 bytes, while in reality, the first field has the same address as the structure.
9
8
845
Huh, well spotted. I definitely don't get the impression he spends much time figuring out types in a debugger 😆
5
586
Replying to @taviso
It's an exception logged somewhere, and it probably contains some form of stack trace, so why it's not a "stack trace dump"? In my understanding "dump" stands for the fact of saving, or maybe the presence of RAM memory data in there🤔
2
33
You're right, that alone wouldn't mean anything - it just made me suspect they might not do much crash analysis, so conflated the terms "stack trace" and "minidump".
3
76
This tweet is unavailable
I don't know, I worry that it was engagement farming.
2
306
Replying to @taviso
??? But he said really big words and posted images with lots of numbers and letters??
6
3
1
530
Replying to @taviso
Stack trace dump is when you read a stack trace on the toilet.
7
3
401
Replying to @taviso
the way I don’t code but knew he was full of shit and just had to wait for someone not-repugnant to shut his bs down lmao
2
150
Replying to @taviso
He still can't write an exploit on the wall while showering like you can and have, I forget how many times. 😉
1
2
93
Replying to @taviso @andrewmd5
All I could do was roll my eyes at the guys DEI comment
2
79
Replying to @taviso
the dig at dei here is truly baffling
people will really be like, "using the Woke rust? that pales in comparison to my strategy, avoiding memory bugs in the apolitical c++" and then neither avoid politics nor memory bugs in c++
1
26
Replying to @taviso
Thanks for speaking out about that guy’s ramblings. The shitting on DEI was bad enough and an obvious red flag so I assumed the rest was bullshit even before I read it
13
Replying to @taviso
What’s even the point of trying to analyze this compiled code in memory? It’s not gonna shed any light on the nature of the mistake that was made. Without symbols or source, it just seems like a pointless exercise.
6
12
Replying to @taviso
Why did the NULL pointer destroy the world? Because it couldn't find its place in the universe!
8
Replying to @taviso @FSchweitzer
He mentions James O‘keefe right in his bio. That’s pretty much all one would have to read to judge his trustworthiness imho.
4
Replying to @taviso
Engagement Template: I'm a professional __________ who worked for ___ years in ___________ Here's what happened with __________ 🧵1/___
1
2
Replying to @taviso
Kinda reads like a LLM wrote that
1
Replying to @taviso
Yeah that tweet thread made no sense. Glad you tried :-)
1
Replying to @taviso
Just daily life of a “guru”
Replying to @taviso
I mean, even just the hook is weird. Who the hell labels C++ a "memory unsafe language" when presenting it to an audience that's potentially unfamiliar with it?
Replying to @taviso
Uh. Stack trace dump is like pretty standard.
Replying to @taviso
Is there a possibility this is happening because of AI integration to @taviso take snapshots and more intervention? But possibly it went rogue?
Replying to @taviso
He was just pitching Rust Sales tweet
6
93
Replying to @taviso
The biggest red flag was: "Oh, it's a null pointer reference. A check for null would have fixed it."
2
1
60