Microsoft KB Archive/119853

{|
 * width="100%"|

INFO: PC Hangs While Running a Communications Application

 * }

Q119853

-

The information in this article applies to:


 * Microsoft Windows Software Development Kit (SDK) 3.1

-

SUMMARY
This article provides information about a problem that has appeared on recently manufactured IBM PCs and PC compatibles. Many of these machines incorporate the Peripheral Component Interface (PCI) bus, giving the impression that the problem may be somehow related to this bus. The problem, however, can occur on machines with other bus architectures. An obvious symptom of this problem is that when a comm port is opened and closed a couple of times, the machine hangs, forcing the user to reboot the PC.

MORE INFORMATION
There is a problem with a Super I/O chip (SMC '665) that many OEMs used to provide serial ports on their latest generation (typically PCI-bus-based) PCs. This problem can (and has) shown up on PCs that do not have a PCI bus. Having the bad chip is all that is needed to cause this problem.

The problem is that if you reset the first in, first out algorithm (FIFO) by clearing and then enabling it when the port is initializing, and there is already a character in the receive FIFO, the comm driver gets an indication that a new character has been received. The driver, of course, tries to get this character. Unfortunately, the driver keeps finding that a new character is available even if no more characters have been received. In this case, you can do nothing short of a cold reboot to get rid of this indication. Any workaround should, therefore, avoid this situation altogether.

A workaround involving a driver is to disable the FIFO, read a character, then reenable it. A workaround if you do not have access to a driver is to disable the FIFO feature of the 16550 UART. You can accomplish this by editing (adding the entry if it does not exist) the COMxFIFO key (x = 1, 2, etc. for COM1, COM2, etc.) of the [386Enh] section in the SYSTEM.INI file. For example, the FIFO for COM2 can be disabled with the following entry:

  [386Enh] COMXFIFO=0 NOTE: Disabling a comm port's FIFO reduces its data throughput.

The COMM.DRV communications driver shipped with Windows version 3.x and SERIAL.386 shipped with Microsoft Windows For Workgroups version 3.11 do not offer a workaround for this problem. Users of Windows for Workgroups version 3.11, however, can download an upgrade to SERIAL.386; this upgrade works around the problem. Users of Windows version 3.x have to obtain a third-party communications driver that implements a workaround (or explicitly disables the FIFO) to solve the problem.