PRB: Shutdown Stops Responding When Executing Software Interrupts (245561)



The information in this article applies to:

  • Microsoft Windows 98 Driver Development Kit (DDK)

This article was previously published under Q245561

SYMPTOMS

On Microsoft Windows 98 Second Edition, the computer may stop responding when Windows is shutting down if a VxD calls Exec_VxD_Int to execute a software interrupt.

CAUSE

After broadcasting the End_PM_App System Control message, virtual machine manager (VMM) will delete the local descriptor table (LDT). Exec_VxD_Int results in VMM trying to load the FS hardware register with a particular selector value. If Exec_VxD_Int is called after the LDT is deleted, the selector that is loaded into the FS will be invalid, resulting in a General Protection Fault.

RESOLUTION

The following are two possible work arounds:

  • Enable FastShutdown (also known as FastReboot). In the registry under HKLM\System\CurrentControlSet\Control\Shutdown is a string value named FastReboot. By setting FastReboot to the number one, the LDT will not be deleted as FastShutdown eliminates much of the standard shutdown processing.
  • VxDs processes the End_PM_App System Control message in order to determine when to stop calling Exec_VxD_Int. The LDT is deleted after the End_PM_App message is broadcast to all devices. The End_PM_App message is broadcast whenever a protected-mode application is ending. On receipt of the End_PM_App message, VxDs will test the Microsoft virtual machine (Microsoft VM) handle by calling Test_Sys_VM_Handle. If it is the Microsoft VM handle, VxDs will stop calling Exec_VxD_Int.

STATUS

This behavior is by design.

REFERENCES

See the Microsoft Windows 98 DDK for more information on VMM services.

Modification Type:MajorLast Reviewed:3/8/2000
Keywords:kbprb KB245561