Support Center

Your questions answered

Knowledge Base

Searching in: Articles & FAQs
Filter the search results
Applies to:
Last update:
Searching in: Articles & FAQs
ID: AR12B00117
Applies to: NX Client Products
Added on: 2004-12-20
Last update: 2009-03-09
How to solve Cygwin DLL conflicts

The root cause of this issues lies in the fact that there are multiple versions of
Cygwin DLL's resident on the system.

A symptom can be that the NX client installation suddenly ceased to work after
having installed another Unix interoperability software. This issue, for example,
is known to happen when the OpenSSH package for Windows is installed.

NX Client 3.0.0 allows  to choose if replacing cygwin1.dll present on the system with the version included in the client package or renaming the cygwin1.dll provided by the client installation. More details are available at:

http://www.nomachine.com/ar/view.php?ar_id=AR03E00449

NX Client 2.0.0 is also able to detect a possible Cygwin conflict but allows only to rename the cygwin1.dll provided by the client installation. In this way, the NX client components will try to use the other cygwin1.dll present on the system. If the version of this DLL is compatible, the application will work properly.

In both cases, the original DLL will be preserved and renamed as cygwin1.dll.backup.Please, note that rebooting is also suggested if you are still unable to run your application.

However, in some circumstances, this could be not enough to handle the conflict and the NX session can fail to start with errors similar to:

Error: Function fork failed with result '-1'. Error is 11 'Resource
temporarily unavailable'.
Error: Failed to execute the X auth command. Error is 11 'Resource temporarily unavailable'.

In this case, you could try to solve the conflict by hand. You should find the dll
versions, using the Windows OS tools to search for files named cygwin1.dll.

After searching, you will need to compare the version levels of the dll's found by right-clicking on each of them and checking the properties. Let's say that version of cygwin1.dll provided by the NX Client installation is for example 1.x.yz.

If your Cygwin supplied file is version is older than 1.x.yz, you will need to:

  • - Make a back-up of the original DLLs present on the system, usually in x:\cygwin\bin,  where 'x' is the drive on which you have installed Cygwin.
  • Copy the NX versions of the following DLLs from C:Program Files/NX Client for Windows/bin  (or from the correspondent directory where you installed NX client) to x:\cygwin\bin:    

    - cygwin1.dll
    - cygcrypto-0.9.8.dll
    - cygjpeg-62.dll
    - cygminires.dll
    - cygpng12.dll
    - cygz.dll

This is usually enough to ensure that the Cygwin subsystem will be able to find a unique copy of its DLLs and that you are using the latest cygwin1.dll.
Reeboting may be suggested.

If your Cygwin supplied file version is older than 1.x.yz, you will need instead
to copy the same DLLs listed above from your Cygwin installation directory to
the C:Program Files/NX Client for Windows/bin, or in the correspondent directory where you installed NX client.

Please note also that Cygwin's inability to handle multiple versions of its DLLs is a known problem. While this problem can be minimized by shipping modified Cygwin libraries and by using tools like 'rebase' and similar, NoMachine looks forward to building the NX software for Windows as native Win32 components.

Related Feature Request:
- Removing the Cygwin compatibility layer used to run NX components on Windows
  http://www.nomachine.com/fr/view.php?id=FR03F02034