EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Channel Access and Windows 95
From: Ken Evans <[email protected]>
To: [email protected]
Cc: [email protected]
Date: Tue, 24 Mar 1998 10:34:43 -0600
     This note describes a bug in Winsock 2 that causes channel access
to not work properly on Windows 95.

     Windows NT and Windows 95 comprise the 32-bit application
programming interface (API) known as WIN32 which is for Intel (and
some other) computers.  The API for these two platforms only differs
in a few function calls, so it is posssible to make programs that run
unmodified on both of these systems.  Channel Access (CA) is developed
by Jeff Hill on a Windows NT machine and tends to runs well on NT.
There have been problems with Windows 95 that have not been well
quantified, and there have even been conjectures that CA doesn't work
for Windows 95.

     I have used CA on Windows 95 to a considerable extent and have
found that it can be made to work.  There is one significant problem
that causes it to not work well and appear to be flakey.  This is
owing to a bug in the Windows 95 implementation of Winsock 2 in some
versions.  It is the purpose of this note to describe the problem and
how to avoid it.

     The problem is caused by an improper implementation in Winsock 2
of the select() call.  This is the function that looks to see if there
is activity on any of the sockets attached to CA.  Normally, it checks
and returns immediately (1 ms or so).  In a version of Winsock 2 that
has been heavily distributed, it does not return for .5 s if there is
no input and waits until there is input otherwise, neither of which is
immediate.  Since CA checks frequently, this can tend to leave the
program no time to do what else it is supposed to do.

     There are two parts to Winsock, the API and the service provider
(SP).  The API is what is used to build CA.  The SP is the part that
is installed on Windows.  Windows NT typically comes with the Winsock
2 SP installed, but Windows 95 comes with Winsock 1.1.  CA appears to
run all right with Winsock 1.1.  This version does not have the bug
described above.  Versions of CA through R3.13.0.beta11 were built
with the Winsock 1 API.  These versions can become flakey when Winsock
2 is installed.  The next versions of CA will use the Winsock 2 API
and will require Winsock 2 to be installed as the service provider.
Moreover, Microsoft is recommending that Windows 95 be upgraded to
Winsock 2 because of security problems with Winsock 1.  The versions
of CA built with the Winsock 2 API also may not work with the Winsock
2 SP installed, (because the bug is in Winsock 2, not CA).

     There is now a version of Winsock 2 that does not have the bug.
However, the buggy version has been widely distributed and is still
being distributed from the Microsoft site and other places.  In
particular, the Java JDK 1.1.5 from Sun asks to install Winsock 2.  It
installs the buggy version.  The Winsock 2 software development kit
(SDK) itself has an installation program, ws2setup.exe, that installs
the buggy version.

     You can get a version of ws2setup.exe without the bug at:

http://www.microsoft.com/windows95/info/ws2.htm.

     Among other things, ws2setup.exe installs the file, ws2_32.dll in
the WINDOWS\SYSTEM directory.  If you do not have this file, you do
not have Winsock 2.  You can check the version of this file to see if
you have the buggy version or not.  One way is to right click on the
file in Explorer and look at Properties.  The common buggy version is
4.10.1511.  Version 4.10.1656 appears to be all right.  Presumably
versions later than this will also not have the described bug.

     Note that your previous Winsock 1 version is saved by
ws2setup.exe in the WINDOWS\ws2bakup directory, and there is a file
ws2bakup.bat that you can run to restore the 1.1 version.

	-Ken

Navigate by Date:
Prev: Rs232 Mauro Giacchini
Next: Channel Access with Java on Solaris Ken Evans
Index: 1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Rs232 Mauro Giacchini
Next: Channel Access with Java on Solaris Ken Evans
Index: 1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·