PC Hangs While Running a Communications Application

Last reviewed: July 23, 1997
Article ID: Q119853
3.10 3.11 WINDOWS kbprg

The information in this article applies to:

  • Microsoft Windows Software Development Kit (SDK) for Windows, version 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.

REFERENCES

The updated SERIAL.386 file for Windows for Workgroups version 3.11 is included with PSS Application Note WG1001, "Updated SERIAL.386 Driver for Windows for Workgroups" (also found in KB article Q112300).

For more information about WG1001, query on the following word in the Microsoft Knowledge Base:

   WG1001


Additional reference words: 3.00 3.10 WfW 3.11 COM freeze OpenComm
CloseComm hung frozen
KBCategory: kbprg
KBSubCategory: KrCommapi
Keywords : kb16bitonly kbprg
Version : 3.10 3.11
Platform : WINDOWS


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 23, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.