StackHash and Application Crashes on Windows

Code Monkey 6 Comments

Software BugWe got an interesting application crash yesterday with a confusing message similar to this:

Fault bucket 42424242, type 1
Event Name: APPCRASH
Response: None
Cab Id: 0

Problem signature:
P1: MyApp.exe
P2: 1.42.42.42
P3: 598773cf
P4: StackHash_ac62
P5: 0.0.0.0
P6: 00000000
P7: c0000007
P8: 00000000
P9:
P10:

We spent some time wondering if our crypto libraries were the problem (we just made some changes recently), but concluded that was unlikely. So what the heck is the “StackHash” module? Did our trashed stack cause the kernel to think we were a different module? Nope.

The answer is that the Windows executive couldn’t identify the module we were in when the application crashed (it uses the instruction pointer to determine what code was executing). In this case, the kernel simply takes a hash of the stack so at least we might be able to identify if we’ve seen this exact crash before. Here’s the answer summarized by an engineer from Microsoft:

In the OS when I try to get a faulting module name it is possible that there is no module laoded (sic) at that address. For example in this case the EIP was zero. So in those cases where a module is not loaded and it is not also in the unloaded module list, I take a stack hash of the stack so that we can identify this crash from other crashes where also the module is not known.

Pixar’s Wall-E: Interview With Supervising Animator Angus MacLane

Oh So Random No Comments

Wall-EDen of Geek has an interesting interview with Angus MacLane, Pixar’s supervising animator of Wall-E. He reveils plenty of good insights into the development process of Wall-E, but my favorite parts are about the software (of course):

[Interviewer] And does the software you use alter much as you go along, over a three year production cycle?

[Angus] The software for the actual execution of the film doesn’t change that much. Because you really need to lock it to one piece of software. Maybe there’ll be an update here and there, and they’ll be individual sub-programs developed. For example there was a program developed for Wall E just to get his treads to lock to the ground, so they recognise the ground and wrap around and drive as you translate him along. That was technology that was developed as an offshoot from a very similar program from Cars, in keeping the tyres on the ground. But that’s about as automated as we get. Everything else is pretty much hand animated.

I also liked this little tidbit:

[Interviewer] Finally, for anyone looking to break into animation, what advice would you give them?

[Angus] I would say be persistent, and keep trying. A friend of mine, he’s a music composer, he’d got some advice from an old pro when he started. And the old pro said to him that people who succeed in the business are not those that are the most talented, and they’re not the people that know the most people, but they are the people who are able to endure. I think that there’s something profound about that. It’s the old saying, it doesn’t happen by mistake: it’s opportunity met with preparation. So when you get the opportunity, make sure you’re prepared.

You can read the whole interview HERE.

Create Your Own Motivational Posters

Code Monkey, Oh So Random No Comments

I found this great site MoBuck.com that allows you to easily create your own motivational posters. For $1, you can download a high-resolution version, and for $14 they will send you a 8.5 x 11 inch print. It’s a lot of fun.

Here’s a Mr. T poster I made about not breaking the software build:

Google’s Back-end Software

Code Monkey, Tech and Security No Comments

Google LabsLately, I’ve been reading some interesting papers from Google labs about their back-end file system, database, and algorithm framework. What I found most intriguing is the simplicity of their design. The software is highly specialized for their particular application… it follows the “do one thing and do it well” philosophy. It was nice to see that they correctly balanced simplicity against feature set.

Google File System

BigTable

Map-Reduce