Kbase 17199: semaphore or shared memory id 0 kills agents
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Verified
FACT(s) (Environment):
Webspeed 2.x
SYMPTOM(s):
semaphore or shared memory id 0 kills agents
Shared memory version mismatch for <servicename>. (6303)
Found version .. was expecting version . (6304)
CAUSE:
There is a problem with WebSpeed 2.0 and 2.1 on UNIX platforms that can cause
WebSpeed agents to die for seemingly no reason. This is due to an error in
the way WebSpeed interprets semaphore and shared memory identifiers. If the
WebSpeed broker process is the first shared memory process to be started on
your system, it will be assigned semaphore and shared memory ids of 0.
Although these are perfectly legitimate ids on UNIX systems, WebSpeed
interprets this as an error, and the broker dies.
At this point the broker process will die, but the semaphores and shared memory
never get cleaned up. When trying to start a Webspeed broker, it will
appear to start normally (ps will show a _wtb running), but all agents will
die for apparently no reason.
The agents are dying because they still see the 0 id(s) that were never cleaned
up from the original broker.
FIX:
To correct this problem, first shut down the broker if you have one running:
wtbman -i <service name> -e
As root, run the ipcs command. You will get output something like:
IPC status from <running system> as of Tue Aug 5 12:53:42 1997
T ID KEY MODE OWNER GROUP
Message Queues:
Shared Memory:
m 0 0x0097733e --rw-rw-rw- root other
Semaphores:
s 0 0x20d2c36a --ra-ra-ra- root other
This indicates a semaphore with an id of 0, and a shared memory segment with an
id of 0. To remove the semaphore, as root do:
ipcrm -s 0
To remove the shared memory segment, as root do:
ipcrm -m 0
WARNING: ipcrm is a UNIX command that will remove semaphores and shared memory
segments regardless of the process that owns them. If you aren't sure that
they were created by a WebSpeed broker, you run the risk of shutting down
another process on your system. Always use extreme caution when running
ipcrm.
This will remove the 0 id semaphore. Since any future processes will get
semaphore ids > 0, you should now be able to start brokers and get agents
started. This problem should only occur if WebSpeed is the first shared
memory process started after a system reboot. If you use other shared memory
processes, like a Progress database, you can work around the problem by
starting the database broker first.