Defects

The ordinal <number> could not be located in the dynamic link library LIBEAY32.dll / The operating system cannot run %1



ID:    D6531
Published:    29 March 2004
Updated:    22 January 2014
 

Defect Id

DEF40832

Originally Reported Against

PVCS Version Manager 8.0.0.0

Resolved In

PVCS Version Manager 8.3

Status

Implemented

Description

When launching the Version Manager (VM) Desktop client GUI, when executing a PCLI command or when launching an IDE that is integrated with Version Manager, a user may encounter the error:
 
The ordinal <number> could not be located in the dynamic link library LIBEAY32.dll.

Example:

The ordinal 2821 could not be located in the dynamic link library LIBEAY32.dll.

Sometimes the GUI just won't launch at all, but running it in console mode (by executing pvcsvmntc.exe from a Command Prompt window) shows:

Cannot load VMS: "VM_Install_Dir\vm\common\bin\win32\pvcsjvms.dll: The operating system cannot run %1"

or a stack dump, like:

 Exception in thread "main" java.lang.ExceptionInInitializerError
       
at pvcs.vm.services.file.VmSvcAccessDbFile.<init>(VmSvcAccessDbFile.java:100)
        at pvcs.vm.services.file.VmServicesFile.oneTimeInitialization(VmServicesFile.java:80)
        at pvcs.vm.services.file.VmServicesFile.init(VmServicesFile.java:68)
        at pvcs.system.PvcsConnection.addInterface(PvcsConnection.java:303)
        at pvcs.system.PvcsSystem.addInterface(PvcsSystem.java:1149)
        at pvcs.system.PvcsConnection.addInterfacesFromFile(PvcsConnection.java:357)
        at pvcs.system.PvcsSystem.loadSystem(PvcsSystem.java:1220)
        at pvcs.system.PvcsSystem.getSystem(PvcsSystem.java:368)
        ...
Caused by: java.lang.Exception: Unknown Exception at line 54 in VMNMInit.cpp
        at pvcs.vm.vms.Init.PvcsInit(Native Method)
        at pvcs.vm.vms.Init.load(Init.java:68)
        at pvcs.vm.vms.Init.loadOrExit(Init.java:99)
        at pvcs.vm.vms.AccessDatabase.<clinit>(AccessDatabase.java:289)
        ... 14 more

Likewise, the Serena VM Web Application Server (used for I-Net / File Server / WebDAV) may show error messages on its console, in the file VM_Install_Dir\vm\common\tomcat\logs\tomcat.log and/or end-user browser sessions such as:
 
java.lang.UnsatisfiedLinkError: VM_Install_Dir\vm\common\bin\win32\pvcsjvms.dll: The operating system cannot run %1
 java.lang.ClassLoader$NativeLibrary.load(Native Method)
 java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1511)
 java.lang.Runtime.loadLibrary0(Runtime.java:788)
 java.lang.System.loadLibrary(System.java:834)
 pvcs.vm.vms.Init.load(Init.java:47)
 ...
 
If that system acts as a File Server, otherwise unaffected File Server clients will get error messages of the type:
 
Cannot find revision RevNum in archive "ArchivePath".
 
or
 
Error: EntityPath: Could not find a revision named * in the archive, "ArchivePath".
 
whenever they try to get revisions from split archives provided by this server.
 
These errors are typically the result of launching PVCS Version Manager on a system where Crystal Reports 9 or later is installed.
 
Crystal Reports will place copies of the files libeay32.dll and ssleay32.dll in the %windir%\System32 folder that are incompatible with the ones used by and shipped with PVCS Version Manager. Normally Version Manager will load the DLLs found in its installation directory, but the order of precedence in which DLL files get located on Windows operating systems force the use of DLL files found in %windir%\System32 over ones found in %PATH%, which is how the VM libraries are loaded.
 
Once the incompatible libraries get loaded into memory, the VM applications fail to start and pass the error to the user.
 
For example, the copy of the libeay32.dll from Crystal Reports in the %windir%\System32 folder is compared below to a copy from the PVCS Version Manager installation:

Directory of c:\winnt\system32

 

09/16/2002 04:30p             675,840 libeay32.dll
              1 File(s) 675,840 bytes

 

Directory of C:\Program Files\Serena\vm\common\bin\win32

09/08/2003  03:05 PM           839,680 libeay32.dll
               1 File(s)        839,680 bytes

Note the size difference.

Resolution

This issue has been resolved as of Version Manager 8.3, by having it pre-load the offending DLLs from the VM directory. If these symptoms are seen in VM 8.3 or newer, check the ISLV.INI file to make sure it contains the section:

[THIRDPARTY]
pvcs.vm.thirdpartydlls=libeay32.dll:ssleay32.dll

If this section cannot be located in the ISLV.ini file, add it to the bottom of that file after first closing all Version Manager instances on the affected PC.

To resolve this issue for Version Manager releases older than 8.3, the appropriate versions of the affected DLLs need to be loaded by the PVCS Version Manager code. 

The search order Windows uses to locate DLLs is:
  1. The directory containing the executable that wants to load the DLL.
  2. The current directory, also known as the "Start in" directory.
  3. The %SystemRoot%\system32 directory (eg. C:\WINNT\system32).
  4. The %SystemRoot%\system directory (eg. C:\WINNT\system).
  5. The %SystemRoot% directory (eg. C:\WINNT).
  6. The directories specified in %PATH%, left to right. 
In order for VM to use its own version of the libeay32.dll and ssleay32.dll DLLs, additional copies needs to be placed in a location that has a higher order of precedence than the mismatched versions from Crystal Reports (which are at location #3), leaving location #1 or #2.  Since location #2 is variable, the best solution is to use location #1.
 
Use the following matrix to locate the executable for each client:
 
 
Client
Executable
Location
Desktop GUI/PCLI
pvcsvmnt.exe
pvcsvmntc.exe
pcli.exe
 
VM_Install_Dir\vm\win32\bin
IDE Client (SCC)
PCLIOutProc.exe
 
VM_Install_Dir\vm\devint\bin as well as the directory of the IDE executable
Rich IDE Client for Visual Studio 2005
devenv.exe
Determined by IDE
Rich IDE Client for eclipse
java.exe
Determined by IDE
File Server/Web App (Running as a Service)
tomcat.exe
 
VM_Install_Dir\vm\common\tomcat\bin
File Server/Web App (Running as an Application)
vpadmin.exe
java.exe
 
VM_Install_Dir\vm\common\jre\win32\bin
 
 
By copying the files libeay32.dll and ssleay32.dll from the directory VM_Install_Dir\vm\common\bin\win32 into the directories shown in this table, you will be able to resolve the problem for the respective clients.

In rare circumstances it may also be necessary to copy the files to the %windir%\System32 folder to overwrite the files that Crystal Reports copied there.

 

Find Answers

Type a question or describe what you are looking for below

My Recent Searches

Welcome kb sso

Additional Assistance

  • Submit a Case Online
  • FAQs