Author |
Message
|
tminifie |
Posted: Mon Mar 05, 2007 2:26 pm Post subject: MQCONN error with 32bit app connecting to MQ v6.0 |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Can anyone help me with this MQCONN error?
I have just moved from MQ v.53 to MQ v6.0. I created a new Queue Manager in MQ v6.0, started the new Qmgr and attempted to start my 32 bit C application and it failed with the MQCONN error below:
echo "where;quit" | dbx $(which arcatcp) core
Type 'help' for help.
[using memory image in core]
reading symbolic information ...
Segmentation fault in xcsFFSTAddDump at 0xd24c17dc ($t1)
0xd24c17dc (xcsFFSTAddDump+0x14c) 88ae0001 lbz r5,0x1(r14)
xcsFFSTAddDump() at 0xd24c17dc
PrepareDumpAreas() at 0xd24bd12c
xcsFFSTFn() at 0xd24c06cc
xstDisconnectExtent() at 0xd24dff5c
xstDropSubpoolConnectionForProcess() at 0xd2516254
xcsDropSubpoolConnectionsForProcess() at 0xd251834c
xcsClearCS() at 0xd251359c
MQCONN() at 0xd394ccd8
CfCommsOpen(pTimeOut = 30, pSyncPt = 0), line 486 in "arccomm.c"
Process(sockclt = 4, client = 1), line 110 in "arcatcp.c"
unnamed block $b5, line 398 in "arcatcp.c"
main(argc = 2, argv = 0x2ff220d8), line 398 in "arcatcp.c"
As you can see, my Queue Manager started ok:
strmqm MQCORE64
WebSphere MQ queue manager 'MQCORE64' starting.
5 log records accessed on queue manager 'MQCORE64' during the log replay phase.
Log replay for queue manager 'MQCORE64' complete.
Transaction manager state recovered for queue manager 'MQCORE64'.
WebSphere MQ queue manager 'MQCORE64' started. |
|
Back to top |
|
 |
tminifie |
Posted: Mon Mar 05, 2007 2:55 pm Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
I forgot to include the operating system:
instfix -i | grep ML
All filesets for 5.2.0.0_AIX_ML were found.
All filesets for 5200-01_AIX_ML were found.
All filesets for 5200-02_AIX_ML were found.
All filesets for 5200-03_AIX_ML were found.
All filesets for 5200-04_AIX_ML were found.
All filesets for 5200-05_AIX_ML were found.
All filesets for 5200-06_AIX_ML were found.
All filesets for 5200-07_AIX_ML were found.
All filesets for 5200-08_AIX_ML were found. |
|
Back to top |
|
 |
tminifie |
Posted: Tue Mar 06, 2007 10:02 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
can someone please respond with some insight to help me?
Just this morning I have asked our Unix Admin team to install the latest fix pack for MQ v6.0(6.0.2.0), perhaps not having this installed is causing my issue. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Mar 06, 2007 10:04 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Can you confirm that you are not attempting to use a bindings connection, in which the application has been statically linked against the v5.3 32 bit libraries, against a 64 bit v6 queue manager?
In other words, please recompile and relink your application and try again. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tminifie |
Posted: Wed Mar 21, 2007 11:14 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Thanks Jeff for the response. Sorry that I didn’t respond sooner but I was pulled off of this issue and am just now returning.
I recompiled and relinked the application as you suggested but I am still getting the MQCONN error as I posted previously.
I have some more information however that might help with generating new ideas to resolve the issue:
1. We have 2 applications(App A and App B).
2. App A is connecting successfully to the queue manager and working as designed.
3. App A is a C++ application.
4. App B is connecting successfully to the queue manager but every new fork()’ed child process of App B is failing in the MQCONN method. App B monitors a port for incoming information from a Smalltalk user interface(UI). Every UI that is started by a user causes App B to fork() a new process. It’s these new processes that are failing in MQCONN.
5. App B is a C application.
6. Both App A and App B link to the mqm libraries: LINCLUDE=-lmqm -L$(HOME)/lib -L$(CBBASE)/lib
7. Both App A and App B use the same internal library that makes the MQCONN call.
8. None of the App A or App B source code has changed since working successfully with MQ v5.3.
9. Compiler:
vac.C 8.0.0.11 APPLIED IBM XL C Compiler
vacpp.cmp.core 8.0.0.0 COMMITTED IBM XL C/C++ Compiler
What should I look at next?
Thanks, |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Mar 21, 2007 11:19 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
So the parent process can MQCONN just fine, but the forked child process can't create a new MQCONN?
If it were really a linking error, I would expect that both would work or both would fail.
I guess I would review the build options in the App Programming Guide for buildling 32-bit server apps on AIX... Or are you trying to build your app as 64bit? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tminifie |
Posted: Wed Mar 21, 2007 11:43 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Quote: |
So the parent process can MQCONN just fine, but the forked child process can't create a new MQCONN? |
You are correct.
Quote: |
If it were really a linking error, I would expect that both would work or both would fail.
|
So would I.
Quote: |
I guess I would review the build options in the App Programming Guide for buildling 32-bit server apps on AIX... Or are you trying to build your app as 64bit? |
I will review the App Programming Guide now. This App needs to stay 32 bit for the time being.
Thank you.
tminifie |
|
Back to top |
|
 |
RogerLacroix |
Posted: Thu Mar 22, 2007 7:29 am Post subject: |
|
|
 Jedi Knight
Joined: 15 May 2001 Posts: 3264 Location: London, ON Canada
|
Hi,
You should have a look in the Quick Beginning guide because there is a section on path setup for 32-bit & 64-bit executables. Because each is different and the default path for WMQ v6 is now for 64-bit modules.
Regards,
Roger Lacroix _________________ Capitalware: Transforming tomorrow into today.
Connected to MQ!
Twitter |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Mar 22, 2007 9:25 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Well, that's a good point.
Maybe the child processes aren't inheriting the right environment from the parent process. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tminifie |
Posted: Thu Mar 22, 2007 11:41 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Ok, I reviewed both the “Application Programming Guide” and the “Quick Beginnings”, tried various compile and linking combinations and still I have the same problem.
Excerpt from “Quick Beginnings”
If you need to set LIBPATH or LD_LIBRARY_PATH, consider not including /usr/lib in the path you specify in the variable. If you need to include /usr/lib in your LIBPATH or LD_LIBRARY_PATH then in order to avoid errors running 64-bit WebSphere MQ applications or WebSphere MQ commands, consider removing the symbolic links from /usr/lib to the 32-bit WebSphere MQ libraries using the dltmqlnk command.
We are using both LIBPATH and LD_LIBRARY_PATH and we do include /usr/lib in the path but we are linking to the MQ 32 bit libraries and we are not attempting to run any 64-bit WebSphere MQ applications or WebSphere MQ commands, so to my understanding this is ok?
I have included a copy of our environment paths along with copies of our makefiles below. Perhaps you can spot something that I am missing.
LD_LIBRARY_PATH=/home/db2v8c2/sqllib/lib32
LIBPATH=/usr/lib:/lib:/opt/freeware/lib:/usr/xerces-c_2_6_0-aix_510-xlc_60_040810/lib:.:/usr/sqr/jre/jre116/lib/aix/native_threads:/usr/teamc/lib:/usr/teamc/lib:/usr/sqr/jre/jre116/lib/aix/native_threads:/home/db2v8c2/sqllib/lib32:.:/cb/lib:/cb/dev/rel4.3/bl1213/lib
arccomm library makefile – This library contains the methods that make the MQI calls. This library is compiled first.
.SUFFIXES:
.SUFFIXES: .o .c
all: arccomm.dll
lib: libarccomm.a
clean:
-rm *.o *.dll *.a 2>/dev/null
ginstall:
-$(SHELL) ginstall.cmd
linstall:
-$(SHELL) linstall.cmd
CBDOMAIN=$(CBBASE)/arccomm
include $(CBBASE)/bin/platform.aix
#Override variables from platform.aix
CC=cc_r
CFLAGS=-q32 -qaggrcopy=nooverlap -qalign=full -qcheck=all -qenum=int -qformat=all -qinitauto=00 -qnodigraph -qnoutf -qsrcmsg
CFLAGS_D=-c $(CFLAGS) $(CFLAGS_O) $(CFLGXTRA)
LINCLUDE=-lmqm
.c.o:
$(CC) $(CFLAGS_D) $(CINCLUDE) $(COUT)"$*.o" $*.c
arccomm.dll: arccomm.o
$(LINK) $(LOUT) $@ \
-p -1024 \
$(LINCLUDE) \
arccomm.o
libarccomm.a: arccomm.dll
$(AR) rv libarccomm.a arccomm.dll
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Platform.aix – this is included in the arcomm library makefile above.
CC=xlc++_r
CFLAGS=-q32 -qaggrcopy=nooverlap -qalign=full -qcheck=all -qeh=v5 -qenum=int -qformat=all -qinitauto=00 -q
langlvl=nonewexcp -qnodigraph -qnoutf -qobjmodel=classic -qsrcmsg -qtempinc -qtmplparse=warn
CFLAGS_O=-g
CFLAGS_D=-c -+ -qidirfirst -DCM_BB_TRACE_OFF $(CFLAGS) $(CFLAGS_O) $(CFLGXTRA)
CINCLUDE=-DXERCES_TMPLSINC -I. $(CINCXTRA) -I$(HOME)/include -I$(CBBASE)/include -I$(DB2INSTANCE_HOME)/sqllib/include -I$(XERCESCROOT)/include
MFLAGS=-c -+ -M
LINK=/usr/vacpp/bin/makeC++SharedLib_r -bnoquiet
LFLAGS=$(LFLGXTRA)
LFLAGS_D=$(LFLAGS)
LFLAGS_O=$(LFLAGS)
LINCLUDE=-lplabase -lplaserv -larcbase -lbusbase -lbusserv $(LINCXTRA) -L. -L$(HOME)/lib -L$(CBBASE)/lib -lplabase -larcbase -lbusbase -lbusserv -L$(DB2INSTANCE_HOME)/sqllib/lib -ldb2 -L$(XERCESCROOT)/lib -lxerce
s-c
COUT=-o
LOUT=-o
SGEN=$(CBBASE)/bin/ddgen
CBMAKE=$(CBBASE)/bin/cbgenmak
SQLPREP=db2 prep
SQLBIND=db2 bind
DB2DB=mqcore32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arcatcp executable makefile – this is the executable that fork()’s the process that fails.
.SUFFIXES:
CC=cc_r
CFLAGS=-q32 -qaggrcopy=nooverlap -qalign=full -qcheck=all -qenum=int -qforma
t=all -qinitauto=00 -qnodigraph -qnoutf -qsrcmsg
CFLAGS_O=-g
CFLAGS_D=$(CFLAGS) $(CFLAGS_O) $(CFLGXTRA)
CINCLUDE=-I. $(CINCXTRA) -I$(HOME)/include -I$(CBBASE)/include
COUT=-o
LINCLUDE=-lmqm -L$(HOME)/lib -L$(CBBASE)/lib
all: arcatcp
clean:
-rm -f *.o arcatcp 2>/dev/null
linstall:
-$(SHELL) linstall.cmd
ginstall:
-chmod g-w arcatcp
-cp arcatcp ../../bin
arcatcp: arcatcp.c
$(CC) $(CFLAGS_D) $(CINCLUDE) $(LINCLUDE) $(COUT) arcatcp arcatcp.c
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is a view of our mqm links in the /usr/lib directory:
lrwxrwxrwx 1 mqm mqm 19 Mar 11 07:47 amqzsca -> /usr/mqm/lib/amqzsc
lrwxrwxrwx 1 mqm mqm 19 Mar 11 07:47 amqzsc21 -> /usr/mqm/lib/amqzsc
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqcxa_r.a -> /usr/mqm/lib/libmqcxa_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqcxa.a -> /usr/mqm/lib/libmqcxa.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqz_r.a -> /usr/mqm/lib/libmqz_r.a
lrwxrwxrwx 1 mqm mqm 21 Mar 25 2007 libmqz.a -> /usr/mqm/lib/libmqz.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqmzf_r.a -> /usr/mqm/lib/libmqmzf_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqmzf.a -> /usr/mqm/lib/libmqmzf.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqmxa_r.a -> /usr/mqm/lib/libmqmxa_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqmxa.a -> /usr/mqm/lib/libmqmxa.a
lrwxrwxrwx 1 mqm mqm 22 Mar 25 2007 libmqmr.a -> /usr/mqm/lib/libmqmr.a
lrwxrwxrwx 1 mqm mqm 27 Mar 25 2007 libmqmcics_r.a -> /usr/mqm/lib/libmqmcics_r.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqmcb_r.a -> /usr/mqm/lib/libmqmcb_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqmcb.a -> /usr/mqm/lib/libmqmcb.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqmax_r.a -> /usr/mqm/lib/libmqmax_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqmax.a -> /usr/mqm/lib/libmqmax.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqm_r.a -> /usr/mqm/lib/libmqm_r.a
lrwxrwxrwx 1 mqm mqm 21 Mar 25 2007 libmqm.a -> /usr/mqm/lib/libmqm.a
lrwxrwxrwx 1 mqm mqm 28 Mar 25 2007 libimqs23ia_r.a -> /usr/mqm/lib/libimqs23ia_r.a
lrwxrwxrwx 1 mqm mqm 26 Mar 25 2007 libimqs23ia.a -> /usr/mqm/lib/libimqs23ia.a
lrwxrwxrwx 1 mqm mqm 20 Mar 25 2007 amqzscg -> /usr/mqm/lib/amqzscg
lrwxrwxrwx 1 mqm mqm 19 Mar 25 2007 amqzsc -> /usr/mqm/lib/amqzsc
lrwxrwxrwx 1 mqm mqm 26 Mar 25 2007 libmqjxs_r.so -> /usr/mqm/lib/libmqjxs_r.so
lrwxrwxrwx 1 mqm mqm 24 Mar 25 2007 libmqiz_r.a -> /usr/mqm/lib/libmqiz_r.a
lrwxrwxrwx 1 mqm mqm 22 Mar 25 2007 libmqiz.a -> /usr/mqm/lib/libmqiz.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqicb_r.a -> /usr/mqm/lib/libmqicb_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqicb.a -> /usr/mqm/lib/libmqicb.a
lrwxrwxrwx 1 mqm mqm 24 Mar 25 2007 libmqic_r.a -> /usr/mqm/lib/libmqic_r.a
lrwxrwxrwx 1 mqm mqm 22 Mar 25 2007 libmqic.a -> /usr/mqm/lib/libmqic.a
lrwxrwxrwx 1 mqm mqm 27 Mar 25 2007 libmqccics_r.a -> /usr/mqm/lib/libmqccics_r.a
lrwxrwxrwx 1 mqm mqm 28 Mar 25 2007 libimqc23ia_r.a -> /usr/mqm/lib/libimqc23ia_r.a
lrwxrwxrwx 1 mqm mqm 26 Mar 25 2007 libimqc23ia.a -> /usr/mqm/lib/libimqc23ia.a
lrwxrwxrwx 1 mqm mqm 21 Mar 25 2007 amqczscg -> /usr/mqm/lib/amqczscg
lrwxrwxrwx 1 mqm mqm 20 Mar 25 2007 amqczsc -> /usr/mqm/lib/amqczsc
lrwxrwxrwx 1 mqm mqm 24 Mar 25 2007 libmqmzse.a -> /usr/mqm/lib/libmqmzse.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqmcs_r.a -> /usr/mqm/lib/libmqmcs_r.a
lrwxrwxrwx 1 mqm mqm 23 Mar 25 2007 libmqmcs.a -> /usr/mqm/lib/libmqmcs.a
lrwxrwxrwx 1 mqm mqm 25 Mar 25 2007 libmqjx_r.so -> /usr/mqm/lib/libmqjx_r.so
lrwxrwxrwx 1 mqm mqm 28 Mar 25 2007 libimqb23ia_r.a -> /usr/mqm/lib/libimqb23ia_r.a
lrwxrwxrwx 1 mqm mqm 26 Mar 25 2007 libimqb23ia.a -> /usr/mqm/lib/libimqb23ia.a
Quote: |
Maybe the child processes aren't inheriting the right environment from the parent process. |
This is what I am wondering as well, but I’m not sure how to determine if this is the case. Although, the fact that this application worked fine on this AIX box with MQ v5.3 prior to this makes me somehow doubt this is the case. And the only change to this box since then, is the uninstall of MQ 5.3 and the install of MQ 6.0. That being said however, I will follow up on this thought. |
|
Back to top |
|
 |
tminifie |
Posted: Tue May 01, 2007 5:11 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 01, 2007 5:17 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
That's a pretty deep symptom. Glad there's a workaround.
You might be able to get an iFix for the specific issue - if you wanted to patch all your qmgrs. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tminifie |
Posted: Tue May 01, 2007 5:34 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Quote: |
You might be able to get an iFix for the specific issue - if you wanted to patch all your qmgrs.
|
How might I go about this?
We had planned to move to MQ v6.0 in July, but I don't know the implications of this "short term" work around to our application. And the Fix Pack is not coming out until August, so iFix may be a practical solution for us. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 01, 2007 5:36 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
If you opened a PMR to find out the problem, then support might have an iFix they could offer you.
Otherwise, open a PMR and find out if support has an iFix for this specific problem.
You'll have to evaluate the impact of setting the ISOLATED mode versus patching your qmgrs. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tminifie |
Posted: Tue May 01, 2007 5:38 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
sorry, this is new to me. What is a PMR and how do I open one? |
|
Back to top |
|
 |
|