Operating System - OpenVMS
1751738 Members
5816 Online
108781 Solutions
New Discussion

Re: Linking problems and support

 
SOLVED
Go to solution
z7ql
New Member

Linking problems and support

Hi.  I've made an sharable image and linked it with a main programm.  During to execution I've got an message 'ident mismatch with shareable image'. The shareable image and the program are compiling and linking one after another  with the same GSMATCH=ALLWAYS,0,0.  What does it means? Could it be linked with the inappropriate symbol vector?

9 REPLIES 9

Re: Linking problems and support

$ HELP/MESSAGE SHRIDMISMAT

 

SHRIDMISMAT,  ident mismatch with shareable image

 

Facility:     SYSTEM, System Services

 

  Explanation:  The activation of a component shareable image failed; the
                calling image expected a different (and typically newer)
                version of the shareable image than the image that was
                found during the failed activation attempt. Specifically,
                the global section match (GSMATCH) value associated with the
                shareable image was found to be incompatible with the GSMATCH
                specification for the version of the shareable image against
                which the calling image was originally linked.

                This error can occur under the following conditions:

                o According to the GSMATCH value established when the
                  shareable image was built, there has been an incompatible
                  change to the shareable image.

                o An attempt was made to run an image built for a newer
                  version of the specific shareable image or a newer OpenVMS
                  version or a newer OpenVMS Engineering Change Order
                  (ECO) in an environment with an older version of the same
                  shareable image.


  User Action:  Relink the executable image against the older version of the
                shareable image, or upgrade to the newer shareable image. You
                may need to relink the executable code for the mismatched (and
                probably older) configuration, possibly specifying a different
                GSMATCH. Alternatively, you may have to upgrade the version
                or apply a patch to OpenVMS or the application to make the
                shareable image match the GSMATCH expectations of the calling
                image.

                For details about creating and maintaining shareable images
                and for information on correctly using the GSMATCH mechanisms
                of the OpenVMS Linker utility, refer to the HP OpenVMS Linker
                Utility Manual.

 

OpenVMS Documentation @ http://h71000.www7.hp.com/doc/os84_index.html

[ I am a HPE Employee and an OpenVMS Ambassador ]
z7ql
New Member

Re: Linking problems and support

Thanks for the answer).
But the question is slightly about the different thing. Let me show some example. 
=======================
1.I assemble source files to .obj
cc foo1.c
cc foo2.c
cc ....

2.I link this into shareable immage
link/shareable/map foo1.obj, foo2.obj, ..., lib1.olb/library, lib2.olb/library, SYS$INPUT/OPTIONS

GSMATCH=ALWAYS,0,0

SYMBOL_VECTOR=(proc1=PROCEDURE,-
proc2=PROCEDURE,-
...,-
data1=PSECT,-
data2=PSECT)

3.define the path to the shareable image
define foo TST$USERS:[dir1.dir2...]foo.exe

4.compile the main program
cc main.c

5.linking with the shared image
link main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
foo.exe/shareable

6.run
run main

===========

And I've got the error:

%DCL-W-ACTIMAGE, error activating image FOO
-CLI-E-IMGNAME, image file $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE
-SYSTEM-F-SHRIDMISMAT, ident mismatch with shereable image

 

So I've linked the shareable image and set GSMATCH=ALLWAYS,0,0
And I've linked the main program with GSMATCH=ALLWAYS,0,0

According to h71000.www7.hp.com/doc/83final/4548/4548pro_027.html

 

"ALWAYS Directs the image activator to unconditionally allow the image to map to the referenced shareable image:regardless of the values of the major and minor ID for the shareable image, as saved at link time in the image file, and the values of the IDs found in the actual shareable image file at activation time.Note that you must still specify values for the major ID and minor ID parameters to satisfy the requirements of the option syntax."

So the image activator should not to consider the major and minor GS numbers at all.
And I really don't know what can cause this error.

H.Becker
Honored Contributor

Re: Linking problems and support

Are foo.exe and foo aka $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE really the same image?

 

If they are different: In your link command you use "foo.exe". The linker takes a foo.exe which is in your default directory, it does not take whatever you defined as "foo". Either use "foo" in the linker options or make sure "foo.exe" is identical to what you defined with "foo".

 

PS: The GSMATCH option when linking the main image has no effect. The linker always writes the GSMATCH info of the referenced shareable images, including your foo.exe, into the main image.

z7ql
New Member

Re: Linking problems and support

To ensure in the identical of images I've done the experiment.

1. Starting new session to discard the "define foo  $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE" effect.

 

2. Cleaning the build directory (TST$USERS:[RDEV.TRUNK.VMS.BUILD])

 

3. Set default [.RDEV.TRUNK.VMS.BUILD]

 

4.compiling the main program

    cc/include=[.-.include]  [.-.src]main.c

 

5.Attempt to link main program
link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0

FOO/shareable

 

As expected the linker can not find foo.exe:

%LINK-F-OPENIN, error opening TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE

 

6. define FOO TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO

 

7.Attempt to link main program
link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
FOO/shareable

 

Result is the same:

As expected the linker can not find foo.exe:

%LINK-F-OPENIN, error opening TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE

 

8.Creating shareable image

cc/include=[.-.include]  [.-.src]foo.c

cc/include=[.-.include]  [.-.src]foo1.c

cc/include=[.-.include]  [.-.src]foo2.c

 

link/sheareable foo.obj, foo1.obj, foo2.obj, lib1.olb/library, lib2.olb/library, SYS$INPUT/OPT
SYMBOL_VECTOR=(proc1=PROCEDURE,-

proc2=PROCEDURE,-
...,-
data1=DATA)

 

9.Attempt to link main program

link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
FOO/shareable

 

Successfully)

 

10 To ensure that the image is registrated in system

INSTALL
INSTALL> LIST FOO

 

DISK$IBSLIVE:<TST$USERS.RDEV.TRUNK.VMS.BUILD>.EXE

FOO;2 Open Shared Lnkbl

 

Is It a magic? 'Dir' command gives only FOO.EXE;1 in the TST$USERS:[RDEV.TRUNK.VMS.BUILD], but not FOO;2

 

11 Running the program gives the same error

 

PS. I've tryed to use 'INSTALL ADD FOO/SHAREABLE' to build in it in the system. May be it is the main issue.

So

1. What can I do to be sure that I defenitly rollback the INSTALL ADD afterwards.

2. How to check this.

 

z7ql
New Member

Re: Linking problems and support

went to read install utility manual.)

z7ql
New Member
Solution

Re: Linking problems and support

So the maine trouble was: system has an installed shareable image and an activator takes it instead  of mine. I do not know how it can takes unexisting image with the number ;2 instead of ;1.

 

The solution is:

set PROCESS/PRIVILEGIES-CMKRNL
INSTALL DELETE FOO

 

I am gratitude for a help, guys. Thanks for everyone. Topic Closed.

Re: Linking problems and support

The Install utility (INSTALL) creates known file entries to improve the performance of executable and shareable images, especially those that run frequently, run concurrently with several processes, or allow images to run in a

privileged context.

 

The Install REPLACE command updates a known file to the latest, or to a specified version found in the specified directory, or in another directory if the file-spec parameter uses a search list. If you specify no qualifiers, the new image retains the same attributes as the old one. Requires the CMKRNL privilege. Also requires the SYSGBL privilege to create

system global sections and the PRMGBL privilege to create permanent global sections.

 

 

[ I am a HPE Employee and an OpenVMS Ambassador ]
H.Becker
Honored Contributor

Re: Linking problems and support

If you want the image activator to use your version of foo instead of the installed one, define the logical foo pointing to the image file name plus version, like: define FOO TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE;

H.Becker
Honored Contributor

Re: Linking problems and support

> Is It a magic? 'Dir' command gives only FOO.EXE;1 in the TST$USERS:[RDEV.TRUNK.VMS.BUILD], but not FOO;2

 

No magic. As long as the image is installed, you can not completely delete it. But you can and you obviously did use DELETE to deletei it from the directory, so it no longer shows with a DIR command. The image file is completely gone after you REMOVE it from the installed images (and the image is no longer used by any other currently running image).