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.