Hi Francis,
I'm not sure if you have gone the PMR route yet, but if not, there is one other trace that you can run that could provide more details on what is happening.
If you run the following trace:
strmqtrc -m qmgr -t all -p prgmname
then a little earlier in the trace where you get the MQOPEN with the Objdesc: NULL, the trace may provide more details of why the Objdesc was NULL.
Here is an example of where I was messing around with the amqsput sample and trying to see if I could recreate the 2044 error. I was getting a 2155 instead, but I did see that the trace with the -t all option was providing more detail on why the Objdesc was NULL. In my case I was setting the od structure to only be as big a version 1 structure, and then setting the version to 2 to force MQ to go past the end of the structure. Looking at my program, this od structure is getting placed very close to the bottom of the stack. So MQ doesn't have to travel too far to access something past the stack memory region, which could cause an illegal access of memory.
Doing the trace with the -t all option could provide more details on why MQ is getting that 2044 error for your program.
Here is an example of what I see for my use case:
08:34:03.263738 29092.1 CONN:1400006 { MQOPEN
08:34:03.263764 29092.1 CONN:1400006 -{ zstMQOPEN
08:34:03.263785 29092.1 CONN:1400006 --{ zstGetPCD
08:34:03.263805 29092.1 CONN:1400006 ---{ zstVerifyPCD
08:34:03.263828 29092.1 CONN:1400006 ---} zstVerifyPCD rc=OK
08:34:03.263848 29092.1 CONN:1400006 --} zstGetPCD rc=OK
08:34:03.263869 29092.1 CONN:1400006 --{ zstCheckODAddressability
08:34:03.263919 29092.1 CONN:1400006 ---{ xcsCheckPointer
08:34:03.263937 29092.1 CONN:1400006 ---} xcsCheckPointer rc=OK
08:34:03.263951 29092.1 CONN:1400006 ---{ xcsCheckPointer
08:34:03.263966 29092.1 CONN:1400006 ---} xcsCheckPointer rc=OK
08:34:03.263981 29092.1 CONN:1400006 ---{ xcsCheckPointer
08:34:03.264042 29092.1 CONN:1400006 Synchronous Signal[11] generated in MQ code. Nesting[1] UserCode[0]
08:34:03.264080 29092.1 CONN:1400006 ---}! xcsCheckPointer rc=xecS_I_ACCESS_DENIED
08:34:03.264100 29092.1 CONN:1400006 Invalid MQOR pointer (2)
08:34:03.264115 29092.1 CONN:1400006 0x0000: 4f442020 00000002 00000001 54435a2e |OD ........TCZ.|
08:34:03.264115 29092.1 CONN:1400006 0x0010: 54455354 31000000 00000000 00000000 |TEST1...........|
08:34:03.264115 29092.1 CONN:1400006 0x0020: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0030: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0040: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0050: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0060: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0070: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0080: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0090: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x00a0: 00000000 00000000 00000004 ffbff6f8 |................|
08:34:03.264115 29092.1 CONN:1400006 0x00b0: 00000005 ffbff824 00000000 00000000 |.......$........|
08:34:03.264115 29092.1 CONN:1400006 0x00c0: 00000002 ffbff6ec 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x00d0: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x00e0: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x00f0: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0100: 00000000 00000002 ffbff6ec 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0110: 00000000 00000000 00000000 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0120: 00000002 ffbff894 ffbff8a1 00000000 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0130: ffbff8ab ffbff8bc ffbff8cf ffbff8e4 |................|
08:34:03.264115 29092.1 CONN:1400006 0x0140: ffbff8ff ffbff903 ffbff91e ffbff93a |...............:|
08:34:03.264115 29092.1 CONN:1400006 0x0150: ffbff951 ffbff966 ffbff971 ffbff980 |...Q...f...q....|
08:34:03.264115 29092.1 CONN:1400006 0x0160: ffbff991 ffbff9a6 ffbff9bb ffbff9cb |................|
08:34:03.264115 29092.1 CONN:1400006 0x0170: ffbff9e0 ffbff9fb ffbffa13 ffbffa2a |...............*|
08:34:03.264115 29092.1 CONN:1400006 0x0180: ffbffa3b ffbffa4f ffbffa61 ffbffa74 |...;...O...a...t|
08:34:03.264178 29092.1 CONN:1400006 --}! zstCheckODAddressability rc=xecS_I_ACCESS_DENIED
08:34:03.264196 29092.1 CONN:1400006 __________
08:34:03.264211 29092.1 CONN:1400006 MQOPEN >>
08:34:03.264225 29092.1 CONN:1400006 Hconn:
08:34:03.264240 29092.1 CONN:1400006 0x0000: 01400006 |***@.. |
08:34:03.264279 29092.1 CONN:1400006 Objdesc: NULL
08:34:03.264296 29092.1 CONN:1400006 Options:
08:34:03.264311 29092.1 CONN:1400006 0x0000: 00002010 |.. . |
08:34:03.264325 29092.1 CONN:1400006 Hobj : Output Parm
08:34:03.264340 29092.1 CONN:1400006 Compcode : Output Parm
08:34:03.264355 29092.1 CONN:1400006 Reason : Output Parm
Thanks,
Tim
From: Tim Zielke
Sent: Thursday, June 26, 2014 2:23 PM
To: MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org
Subject: RE: MQ OD error - 2044 on version 7.5
Hi Francis,
Your object descriptor in the trace is being shown as NULL in the MQOPEN >> (These are the inputs that MQ is seeing in the entry to the OPEN API).
This is what it should look like when a good object descriptor was passed in:
19:48:07.518901 5603.1 CONN:1400006 MQOPEN >>
19:48:07.518920 5603.1 CONN:1400006 Hconn:
19:48:07.518938 5603.1 CONN:1400006 0x0000: 01400006 |.@<mailto:|.@>.. |
19:48:07.518957 5603.1 CONN:1400006 Objdesc:
19:48:07.518976 5603.1 CONN:1400006 0x0000: 4f442020 00000001 00000001 54435a2e |OD ........TCZ.|
19:48:07.518976 5603.1 CONN:1400006 0x0010: 54455354 31000000 00000000 00000000 |TEST1...........|
19:48:07.518976 5603.1 CONN:1400006 0x0020: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x0030: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x0040: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x0050: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x0060: 00000000 00000000 00000000 414d512e |............AMQ.|
19:48:07.518976 5603.1 CONN:1400006 0x0070: 2a000000 00000000 00000000 00000000 |*...............|
19:48:07.518976 5603.1 CONN:1400006 0x0080: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x0090: 00000000 00000000 00000000 00000000 |................|
19:48:07.518976 5603.1 CONN:1400006 0x00a0: 00000000 00000000 |........ |
19:48:07.519047 5603.1 CONN:1400006 Options:
19:48:07.519067 5603.1 CONN:1400006 0x0000: 00002010 |.. . |
19:48:07.519086 5603.1 CONN:1400006 Hobj : Output Parm
19:48:07.519104 5603.1 CONN:1400006 Compcode : Output Parm
19:48:07.519122 5603.1 CONN:1400006 Reason : Output Parm
I am not sure if NULL means that the &od that was passed in was NULL, or it could not access the pointer for some reason so MQ resolves it to NULL.
If I were in your place, I would try the following next:
1. Recompile the code under 7.5 and see if it works.
2. If not, add code to print out the address of that od before it is passed into the open and see what address it is displaying.
There are ways with pmap to see if that address is valid (i.e. falls within the stack memory region or BSS memory region) and in a writeable memory region, but that gets very technical (although I don't mind showing you how, if you want).
You may want to open a PMR at this point to get IBM's help, too.
Thanks,
Tim
From: MQSeries List [mailto:MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org] On Behalf Of Awofeso, Francis
Sent: Thursday, June 26, 2014 11:59 AM
To: MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org<mailto:MQSERIES-0lvw86wZMd9k/***@public.gmane.orgAC.AT>
Subject: Re: MQ OD error - 2044 on version 7.5
Hi Tim,
Thanks for your suggestion. I turned on the trace and re-ran the program. But I am unable to read the formatted trace file. I am attaching it with this email. Please review it and let me know if you find anything in it.
Thanks,
Francis
________________________________
From: MQSeries List [MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org] on behalf of Tim Zielke [tim.zielke-PR+tvw7B/***@public.gmane.org]
Sent: Wednesday, June 25, 2014 5:01 PM
To: MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org<mailto:MQSERIES-0lvw86wZMd9k/***@public.gmane.orgAC.AT>
Subject: Re: MQ OD error - 2044 on version 7.5
One other debugging option is to turn on a strmqtrc api trace and see what values are now being passed in for the MQOD structure. If this is Solaris SPARC, the MH06 supportpac has an mqtrcfrmt program that will help format out all the fields of the MQOD in the before and after of the MQOPEN call, to make it more readable.
If this program is using a local bindings connection to the queue manager, trace it as:
strmqtrc -m qmgr -t api -p prgmname
If this program is using a client connection to the queue manger and the server conn channel runs on the amqrmppa process, you could do the following to trace it:
strmqtrc -m qmgr -t api -p amqrmppa
Thanks,
Tim
From: MQSeries List [mailto:MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org] On Behalf Of Neil Casey
Sent: Wednesday, June 25, 2014 4:09 PM
To: MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org<mailto:MQSERIES-0lvw86wZMd9k/***@public.gmane.orgAC.AT>
Subject: Re: MQ OD error - 2044 on version 7.5
Hi Francis,
sorry, I misread the code in your previous post, and confused MQOO_LEU_GET with MQOD_LEU_QUEUE.
The manual indicates that 2044 can be caused when there are invalid pointers in the MQOO structure. Although MQ should not be checking these, because they are only supposed to be present when version is greater than 1, perhaps MQ v7.5 is being over zealous, and checking things that it shouldn't.
Are you able to change the code, recompile, and test again?
If so, try initialising od with
MQOD od = {MQOD_DEFAULT};
instead of using your own constant structure.
Of course, if you use the MQ v7.5 includes and libraries in the compile, then you are changing a lot more than just this initialisation, so if they are available, you should compile using v5.3 files.
Regards,
Neil
On 26 Jun 2014, at 6:30 am, Awofeso, Francis <francis.awofeso-***@public.gmane.org<mailto:francis.awofeso-***@public.gmane.org>> wrote:
Thanks for your response Neil.
The "options" field has in fact been defined as an MQLONG.
Here is how we setup the "options" field:
#define MQOO_LEU_GET MQOO_INPUT_SHARED|MQOO_FAIL_IF_QUIESCING|MQOO_SAVE_ALL_CONTEXT
MQLONG options; /* default Open/Close options */
MQOD od = {MQOD_LEU_QUEUE}; /* Object Descriptor */
MQMD md = {MQMD_LEU_DEFAULT}; /* Message Descriptor */
MQGMO gmo = {MQGMO_LEU_DEFAULT}; /* get message options */
MQHCONN Hconn; /* connection handle */
MQHOBJ Hobj; /* object handle */
MQLONG CompCode; /* completion code */
MQLONG Reason; /* reason code */
sprintf( c_message, "Open the queue" );
options = MQOO_LEU_GET;
strncpy(od.ObjectName, DefaultQueueName, MQ_Q_NAME_LENGTH);
status = leu_mq_open(Hconn, &od, options, &Hobj, &CompCode, &Reason);
if ( status == MQCC_FAILED ) goto error_exit;
Please let me know if you need to see anything else in order to resolve this problem.
Thanks,
Francis
________________________________
From: MQSeries List [MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org<mailto:***@LISTSERV.MEDUNIWIEN.AC.AT>] on behalf of Neil Casey [neil.casey-+3WXQJpgcXSy/dcwJAY4+***@public.gmane.org.AU<mailto:neil.casey-+***@public.gmane.org>]
Sent: Monday, June 23, 2014 5:47 PM
To: MQSERIES-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org<mailto:MQSERIES-0lvw86wZMd9k/***@public.gmane.orgAC.AT>
Subject: Re: MQ OD error - 2044 on version 7.5
Hello,
I suspect it previously worked because of poor parameter value checking in v5.3. V7.5 is correctly detecting the invalid call and rejecting it.
The options field is supposed to be an MQLONG, not an MQOD structure.
You are setting options to a #DEFINE of a structure, and I have no idea what will show up there.
You then set the queue name in the MQOD structure, but you haven't initialised it first, so it probably doesn't contain the correct eye-catcher, version or object type values.
You should instead be setting od to the initialisation structure, and the options value should be set to some combination of constants the show what open options are needed. Something like "options=MQOO_INPUT_SHARED|MQOO_INQUIRE|MQOO_OUTPUT"
Neil
--
Neil Casey
Senior Consultant | Syntegrity Solutions
<mobile.vsmall.jpg> +61 414 615 334<tel:+61%20414%20615%20334><email.vsmall.jpg> neil.casey-VLLIzlmz+***@public.gmane.org <mailto:neil.casey-VLLIzlmz+***@public.gmane.org>
Syntegrity Solutions Pty Ltd<http://www.syntegrity.com.au/> | Level 23 | 40 City Road | Southgate | VIC 3006
Analyse >> Integrate >> Secure >> Educate
On 24 Jun 2014, at 7:51 am, Awofeso, Francis <francis.awofeso-***@public.gmane.org<mailto:francis.awofeso-***@public.gmane.org>> wrote:
Any idea to resolving this issue will be greatly appreciated
We upgraded from Sun Solaris 10 & MQ 5.3 to Sun Solaris 11 & MQ 7.5. It used to work fine in the old configuration but now...
We are receiving MQ Error 2044 during the "mqopen":
======== P R O * C C O D E ============
sprintf( c_message, "Open the queue" );
options = MQOO_LEU_GET;
strncpy(od.ObjectName, DefaultQueueName, MQ_Q_NAME_LENGTH);
status = leu_mq_open(Hconn, &od, options, &Hobj, &CompCode, &Reason);
if ( status == MQCC_FAILED ) goto error_exit;
===================================
======== T R A C E F I L E =============
2014-06-23-13.58.07 /home/mqm/wmispay MQSUNQ TK.PAYROLLSECTION WMISPAY Connect to MQ
2014-06-23-13.58.07 /home/mqm/wmispay MQSUNQ TK.PAYROLLSECTION WMISPAY Connect to the database
2014-06-23-13.58.07 /home/mqm/wmispay MQSUNQ TK.PAYROLLSECTION LEU_MQ_OPEN MQCC_FAILED: 2044
2014-06-23-13.58.07 /home/mqm/wmispay MQSUNQ TK.PAYROLLSECTION WMISPAY Open the queue
Here is the OD Definition setup:
/****************************************************************
* Object Descriptor default *
* The default for the ObjDesc parameter in the MQOPEN call *
****************************************************************/
#define MQOD_LEU_QUEUE {MQOD_STRUC_ID_ARRAY},\
MQOD_VERSION_1,\
MQOT_Q,\
{""},\
{""},\
{""},\
{""}
Thanks
Francis Awofeso
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
________________________________
List Archive<http://listserv.meduniwien.ac.at/archives/mqser-l.html> - Manage Your List Settings<http://listserv.meduniwien.ac.at/cgi-bin/wa?SUBED1=mqser-l&A=1> - Unsubscribe<mailto:LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org?subject=Unsubscribe&BODY=signoff%20mqseries>
Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com<http://www.lsoft.com/resources/manuals.asp>
To unsubscribe, write to LISTSERV-0lvw86wZMd9k/bWDasg6f+***@public.gmane.org and,
in the message body (not the subject), write: SIGNOFF MQSERIES
Instructions for managing your mailing list subscription are provided in
the Listserv General Users Guide available at http://www.lsoft.com
Archive: http://listserv.meduniwien.ac.at/archives/mqser-l.html