Oh Error Messages, Why Can’t You Say What You Mean?

Talk about spending several days chasing my tail. 🙁

I have a customer who build a brand new Windows 2016 Server and install IBM MQ v9.1 then applied Fix Pack 2. So, they were at MQ v9.1.0.2.

Next, they installed MQAUSX and applied their generic definitions to it. So far, so good.

But when they went to do a test, the channel was closed and the following error messages were found in the queue manager’s log file:

----- amqrimna.c : 866 --------------------------------------------------------
6/10/2019 10:43:05 - Process(2156.3) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(SERVER001) Installation(Installation1)
                      VRMF(9.1.0.2) QMgr(MQA1)
                      Time(2019-06-10T15:43:05.208Z)
                      ArithInsert1(24948) ArithInsert2(126)
                      CommentInsert1(d:\Capitalware\MQAUSX\mqausx.dll)
                      CommentInsert2(The specified module could not be found.)
                      CommentInsert3(64)

AMQ6174I: The library 'd:\Capitalware\MQAUSX\mqausx.dll' was not found.

EXPLANATION:
The dynamically loadable library 'd:\Capitalware\MQAUSX\mqausx.dll' was not
found. Possible reasons for the error:
(a) Library is not present in the specified path.
(b) Library is present but the architecture of the library does not match the
  process's architecture which is '64' bit.
(c) Library is present but it has a dependency on other libraries which are not
  present in the same directory.
ACTION:
Check that the file exists and is either fully qualified or is in the
appropriate directory. Check the architecture of the library and process match.
Also check if the library has dependency on any other libraries.
----- amqxufnn.c : 706 --------------------------------------------------------
6/10/2019 10:43:05 - Process(2156.3) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(SERVER001) Installation(Installation1)
                      VRMF(9.1.0.2) QMgr(MQA1)
                      Time(2019-06-10T15:43:05.210Z)
                      ArithInsert1(24948)
                      CommentInsert1(TEST.CHL)
                      CommentInsert2(d:\Capitalware\MQAUSX\mqausx(SecExit))
                      CommentInsert3(64)

AMQ9535E: User exit not valid.

EXPLANATION:
Channel program 'TEST.CHL' ended because user exit
'd:\Capitalware\MQAUSX\mqausx(SecExit)' is not valid.
Architecture of the exit library does not match the process's architecture
  which is '64' bit.
ACTION:
Ensure that the user exit is specified correctly in the channel definition, and
that the user exit program is correct and available.

The first error message was AMQ6174I which says “not found”. So, I worked with the customer to make sure the MQAUSX install directory and the SCYEXIT parameter for channel were correct and they were (directory listings, screenshots, etc.). So, that was a red herring.

The second error message was AMQ9535E which says the “user exit is not valid”. Had the customer triple check what they had installed and used is32or64 program to verify that indeed they were using the 64-bit release of MQAUSX. Again, another red herring.

I already had IBM MQ v9.1 installed on a 64-bit Windows Server, so I applied Fix Pack 2 and installed MQAUSX 64-bit on the D: drive, just as the customer did. Hence, I was at the same MQ level and MQAUSX setup as the customer’s queue manager and MQAUSX installation. Everything worked perfectly for me. 🙁

We spent so much time going over everything with a fine-toothed comb but nothing was incorrect. Just banging my head against the wall.

The customer asked if they require any Redistributable packages, since it is a brand new server, it doesn’t have any installed. I said if you don’t have “Microsoft Visual C++ 2010 Redistributable x64” installed then yes download and install it. After it was installed and the server was rebooted, everything worked as expected.

Sometimes, I really hate Windows. I don’t know if this was MQ misinterpreting the Windows error message or Windows returning a bad error message to MQ. But it sure wasted a lot of my time. If this was an MQ misinterpreting the error message, then IBM please update your code to better reflect the “actual” issue.

I have had a similar issues on Linux/Unix. On Linux/Unix, when an MQ exit (aka shared library) has a dependency on another shared library, the error message that is outputted to the queue manager’s error log file actually has useful information about the issue. It does not send you off on wild goose chases that have nothing to do with the issue.

Regards,
Roger Lacroix
Capitalware Inc.

This entry was posted in C, Capitalware, IBM MQ, MQ Authenticate User Security Exit, Windows.

3 Responses to Oh Error Messages, Why Can’t You Say What You Mean?