Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm sole developer of a complex critical software system, written in Visual C++ 2005. It's deployed on a classical Microsoft cluster scenario (active/passive), that has Windows Server 2003 R2.

If a server A goes down, the other one (B) starts and take the ownership of its duties.

You have to know that:

  • Both servers have the same Microsoft patches/fixes, same hardware, same everything.
  • Both servers use the same memory storage (a RAID-6 through fiber channel).
  • This software has a main module that launches the peripheral modules. if a peripheral module crashes, the main module restarts it.

When I switch the application in one of the two servers (let's say the B server) two of the peripheral modules of the main applications just started to crash apparently without reason about 2 seconds after the start of the peripheral module.

What could I do to analyze/inspect/resolve this weird situation?

share|improve this question
You need to amend the question subject I think. – Alan B Aug 23 '12 at 14:33
@AlanB what exactly do you mean by "amend the question subject"? – alcor Aug 23 '12 at 14:57
When I saw it the subject was just 'I need advice on how'. Maybe the site or my browser had a temporary wobble! – Alan B Aug 23 '12 at 15:56
This might be a useful place to start... Troubleshooting a Windows Server Cluster – Awalias Sep 3 '12 at 11:23
Are you using a BizTalk cluster? – DeveloperDon Sep 4 '12 at 7:59

Several years ago, debugging Windows crashes due to 802.11 (WiFi) drivers on Windows was a big part of my job. I am not familiar with clusters, but since your question has been open without an answer for about 10 days, I'll take a chance with a few ideas I have.

Problem Isolation

Run the application on a single system in the configuration that you describe. Is this able to run without crashing for some length of time? Is there away to stress it similar to what occurs during an update?

If you make an update, does the crash occur because you are making the update or because of something that is different in the new program? Perhaps an experiment where you change only the version number of your application between updates would show that it can update or can't update. This might isolate the problem to the code change or the way the update is performed respectively.

Increasing Visibility Through Tools

Two words: Mark Russinovich and Bryce Cogswell. I mean SysInternals. It is early and I can't count yet. However, these guys and their free Windows internals tools are essential for any Windows programmer. DebugView saved me many times and LiveKd looks like it could be relevant to your situation. You will probably want to use DebugView in its remote mode (via TCP/IP) so that you can log user-mode and kernel mode on a PC that is not crashing and to see the before/during/after.

If you are getting a BSOD (Blue Screen of Death) you will want to configure to save a crash dump. Windows had three levels: minidump (about 64K for registers, stack, configuration, and a small amount of state), kernel (about 256 MB, adds kernel memory), or systems (can be as big as your system memory). When you have these dumps, you can either use DebugView in its crash analysis mode, or you can get the free download of WinDbg which includes not only the Microsoft kernel debugger, but an extensive reference that lets you decode every stop code (the hex values shows with the BSOD).

Sorry to not have more specific suggestions. Good luck.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.