The embedded Java Message Service (JMS) JMSServer does not start when configured to run with non-root user ID
 Technote (troubleshooting)
 
Problem(Abstract)
If you previously ran the Java™ Message Service (JMS) JMSServer using the root user ID, then you changed the configuration to run as non-root, you might have trouble starting the broker.

This is due to broker semaphores and shared memory segments that are owned by root and are still active. The problem is present on AIX® and Solaris Operating Systems. This document outlines steps you can take to start the JMSServer successfully.
 
Cause
When you configure the embedded JMSServer to run under the root user, the operating system creates numerous broker semaphores and shared memory segments for this root user. Root user broker semaphores and shared memory segments are owned by mqm mqm and root other users or groups.

After configuring WebSphere® and the JMSServer to run as a non-root user, the startup fails with the following lines appearing in the SystemOut.log of the JMSServer in a federated environment, or server1 in a standalone environment:


[6/2/04 20:13:44:100 PDT] 10ca208 JMSEmbeddedPr A MSGS0050I: Starting
the Queue Manager
[6/2/04 20:13:49:800 PDT] 10ca208 JMSEmbeddedPr A MSGS0051I: Queue
Manager open for business
[6/2/04 20:13:49:875 PDT] 10ca208 JMSEmbeddedPr A MSGS0052I: Starting
the Broker

The following error appears in the native_stderr.log file:

BIP2227E: Severe error (before init): /build/S210G_P/src/CommonServices/Unix/ImbGlobalMutexHelper.cpp 433 semctl
13
5
doInitialisation
@(#) 1.1 CommonServices/Unix/ImbGlobalMutexHelper.cpp, iseries, S210S 02/08/12 05:20:55 [8/20/02 10:28:04]
(0xdef41d14+0x01034) __1cIImbAbendWlogSystemErrorInternal6Fpkcki2rkn0AGInsert_66666pkvkb_v_ (0x0, 0xdfcfbd44, 0xdfcfbd4c, 0xdfcfbd54, 0xdf048f04, 0xdfcfbd5c) in /opt/wemps/lib/libCommonServicesw110.so

 
Resolving the problem
To fix this problem, create new and valid broker semaphores and shared memory segments for the non-root user. Also, remove the broker semaphores and shared memory segments that are no longer valid for the root user.
  1. To find out if the semaphores and shared memory segments are held by root other and mqm mqm, issue the following command as root user:

    ipcs

    This displays memory segments, semaphores and ownership:

    m    131073    0xe4663d62 --rw-rw-rw-   root  other
    m         7         0x0d001334 --rw-rw-rw-   mqm mqm
    ....
    s    262144   0x58000910 --rw-rw-rw-    root   other


  2. To delete semaphores and shared memory segments:

    ipcrm

    This deletes memory segments and memory semaphores owned by root other and mqm mqm.

    ipcrm -m  memory segment id as shown in ipcs display

    For example:
    ipcrm -m 0xe4663d62
    ipcrm -m 0x0d001334
    ipcrm -s 0x58000910


  3. Reboot the operating system after removing the semaphores and shared memory segments.
 
 
Cross Reference information
Segment Product Component Platform Version Edition
Application Servers Runtimes for Java Technology Java SDK
 
 


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server > Java 2 Connectivity (J2C)
Operating system(s): Solaris
Software version: 5.1.1.11
Software edition:
Reference #: 1144021
IBM Group: Software Group
Modified date: Oct 13, 2004