osaf/libs/core/leap/os_defs.c | 4 ++--
osaf/services/infrastructure/nid/scripts/opensafd.in | 9 +++------
2 files changed, 5 insertions(+), 8 deletions(-)
OpenSAF fails to start on systems with (e)glibc version 2.19, e.g. Ubuntu
14.04, openSUSE 13.2:
Error messages produced by the MSG service:
May 21 13:17:49 SC-1 local0.crit osafmsgnd[536]: CR Creation of shared memory
segment failed
May 21 13:17:49 SC-1 local0.crit osafmsgnd[536]: CR Destroying the shared
memory segment failed
May 21 13:17:49 SC-1 local0.err osafmsgnd[536]: ER saAmfComponentUnregister
Failed with error 7
May 21 13:17:49 SC-1 local0.err osafmsgnd[536]: ER Either library
initialization or destroy failed
May 21 13:17:49 SC-1 local0.err osafmsgnd[536]: __init_mqnd() failed
May 21 13:17:59 SC-1 local0.notice osafamfnd[454]: NO Instantiation of
'safComp=MQND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF' failed
May 21 13:17:59 SC-1 local0.notice osafamfnd[454]: NO Reason: component
registration timer expired
May 21 13:17:59 SC-1 local0.warn osafamfnd[454]: WA
'safComp=MQND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF' Presence State
INSTANTIATING => INSTANTIATION_FAILED
May 21 13:17:59 SC-1 local0.err osafamfnd[454]: ER
'safComp=MQND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF'got Inst failed
May 21 13:17:59 SC-1 local0.crit osafamfnd[454]: Rebooting OpenSAF NodeId =
131343 EE Name = , Reason: NCS component Instantiation failed, OwnNodeId =
131343, SupervisionTime = 60
Error messages produced by the CPKT service:
May 21 13:12:18 SC-1 local0.notice osafckptnd[496]: Started
May 21 13:12:19 SC-1 local0.err osafckptnd[496]: ER cpnd open request fail for
RDWR mode (null)
Error messages produced by the LCK service:
May 21 13:12:56 SC-1 local0.crit osaflcknd[671]: CR GLND shm create failure:
rc 2 Error Invalid argument
May 21 13:12:56 SC-1 local0.notice osafamfnd[457]: NO
'safComp=GLND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF' faulted due to 'avaDown' :
Recovery is 'componentRestart'
May 21 13:12:58 SC-1 local0.notice osaflcknd[684]: Started
May 21 13:12:58 SC-1 local0.crit osaflcknd[684]: CR GLND shm create failure:
rc 2 Error Invalid argument
May 21 13:12:58 SC-1 local0.notice osafamfnd[457]: NO
'safComp=GLND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF' faulted due to 'avaDown' :
Recovery is 'suFailover'
May 21 13:12:58 SC-1 local0.err osafamfnd[457]: ER
safComp=GLND,safSu=SC-1,safSg=NoRed,safApp=OpenSAF Faulted due to:avaDown
Recovery is:suFailover
May 21 13:12:58 SC-1 local0.crit osafamfnd[457]: Rebooting OpenSAF NodeId =
131343 EE Name = , Reason: Component faulted: recovery is node failfast,
OwnNodeId = 131343, SupervisionTime = 60
The POSIX function shm_open() says that the name of a shared memory segment
shall begin with a slash, followed by up to 254 characters, none of which is a
slash. Glibc version 2.19 added stricter checks, that disallow slashes in names
of POSIX shared memory segments (which were previously allowed by glibc). Since
OpenSAF uses slashes in the names, the call to shm_open() now fails.
The solution replaces slashes with underscore characters in the shared memory
segment names.
diff --git a/osaf/libs/core/leap/os_defs.c b/osaf/libs/core/leap/os_defs.c
--- a/osaf/libs/core/leap/os_defs.c
+++ b/osaf/libs/core/leap/os_defs.c
@@ -773,7 +773,7 @@ uint32_t ncs_os_posix_shm(NCS_OS_POSIX_S
return NCSCC_RC_FAILURE;
}
shm_size = (long)req->info.open.i_size;
- snprintf(shm_name, PATH_MAX, "/opensaf/%s",
req->info.open.i_name);
+ snprintf(shm_name, PATH_MAX, "/opensaf_%s",
req->info.open.i_name);
req->info.open.o_fd = shm_open(shm_name,
req->info.open.i_flags, 0666);
if (req->info.open.o_fd < 0) {
return NCSCC_RC_FAILURE;
@@ -820,7 +820,7 @@ uint32_t ncs_os_posix_shm(NCS_OS_POSIX_S
case NCS_OS_POSIX_SHM_REQ_UNLINK: /* unlink is shm_unlink */
- snprintf(shm_name, PATH_MAX, "/opensaf/%s",
req->info.unlink.i_name);
+ snprintf(shm_name, PATH_MAX, "/opensaf_%s",
req->info.unlink.i_name);
ret_flag = shm_unlink(shm_name);
if (ret_flag < 0) {
printf("shm_unlink failed with errno value %d\n",
errno);
diff --git a/osaf/services/infrastructure/nid/scripts/opensafd.in
b/osaf/services/infrastructure/nid/scripts/opensafd.in
--- a/osaf/services/infrastructure/nid/scripts/opensafd.in
+++ b/osaf/services/infrastructure/nid/scripts/opensafd.in
@@ -26,7 +26,6 @@ else
. $pkgsysconfdir/nid.conf
fi
-shmdir=/dev/shm/opensaf
binary=$pkglibdir/$prog
lockfile=$lockdir/$prog
amfnd_bin=$pkglibdir/osafamfnd
@@ -77,9 +76,9 @@ check_env() {
exit 6
fi
- # /dev/shm, /var/lock & /var/run could be tmpfs mounts and needs to be
+ # /var/lock & /var/run could be tmpfs mounts and needs to be
# recreated at each boot
- directories="$shmdir $lockdir $pkgpiddir"
+ directories="$lockdir $pkgpiddir"
for directory in $directories; do
mkdir -p $directory
if [ -n "$OPENSAF_GROUP" ]; then
@@ -95,9 +94,7 @@ check_env() {
clean_shm() {
# Remove shared memory files created by OpenSAF
- if [ -d /dev/shm/opensaf ]; then
- rm -rf /dev/shm/opensaf
- fi
+ find /dev/shm/. -maxdepth 1 -name 'opensaf_*' -exec rm -f {} \;
}
enable_coredump() {
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel