Beware threaded ICMP on Vista
I wrote about this issue a while ago, but the post was, well… a bit of a rant.
Attempting to use ICMP echo requests (and possibly other ICMP functionality) from multiple threads in vanilla Vista (without any service packs) results in system slow down and a quick BSoD.
This occurs if you are manually creating ICMP packets or using Microsoft’s ICMP dll.
This only occurs if you attempt to use ICMP functionality from multiple threads.
Also be aware that the Vista SP1 service pack can fail to install from the Windows Update application if any languages not supported by the default SP1 installer are present in the system. This includes Chinese which is often included in default Windows installations. In my case, this error resulted in SP1 failing to install and it also being removed from the Windows Update software list which made me believe that it had succeeded.
If you use any ICMP functionality, test your application on Vista without SP1.
If your application exhibits the above behavior do the following:
- In your application
- Add code to detect the operating system the application is running on.
- If the OS is Vista without any service packs, display an error message detailing the issue and how to remedy it.
- Provide the ability to exit the application.
- Provide the ability to ignore the warning and continue execution at their own risk. This will cater to false positives.
- Provide the ability to remember the user’s choice.
- If the application does not shutdown successfully, assume a BSoD occured, ignore the user’s last choice and show the prompt again.
- On your download page
- Place information and instructions for users to read.