Hi Sundararaj,

The Opensaf can start but it may not run correctly.
I tested your patch. During passive mornitoring process of copoenent,
this patch cuases the coredump in function avnd_comp_pm_param_val() 
when invoking saAmfPmStop()/saAmfPmStart().

Snipest code indicate the crash in cpm.cc file
void avnd_comp_pm_param_val( )
{
...
      if (kill(pm_start->pid, 0) == -1) {
        osafassert(errno == ESRCH); //Crash here due to retured error: 
Operation not permitted
        *o_amf_rc = SA_AIS_ERR_NOT_EXIST;
        return;
      }
}

B.R/Thang
-----Original Message-----
From: s.an...@gethighavailability.com <s.an...@gethighavailability.com> 
Sent: Tuesday, July 21, 2020 9:22 AM
To: Minh Hon Chau <minh.c...@dektech.com.au>; Thang Duc Nguyen 
<thang.d.ngu...@dektech.com.au>; nagen...@gethighavailability.com; 
p...@gethighavailability.com
Cc: opensaf-devel@lists.sourceforge.net; Anand Sundararaj 
<s.an...@gethighavailability.com>
Subject: [PATCH 1/1] amf: remove hard-coding in amfnd [#3205]

From: Anand Sundararaj <s.an...@gethighavailability.com>

---
 src/amf/amfnd/amfnd.conf | 3 +++
 src/amf/amfnd/main.cc    | 9 ++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/amf/amfnd/amfnd.conf b/src/amf/amfnd/amfnd.conf index 
07bc0ba..4e8b07a 100644
--- a/src/amf/amfnd/amfnd.conf
+++ b/src/amf/amfnd/amfnd.conf
@@ -34,3 +34,6 @@ export AVND_PM_MONITORING_RATE=1000  # It can be disabled if 
set THREAD_TRACE_BUFFER as 0, the maximum value  # can be set as 65535.
 # export THREAD_TRACE_BUFFER=10240
+
+#AMFND run as root. Uncomment next line to run as a user mentioned in nid.conf.
+#export AMFND_NON_ROOT=1
diff --git a/src/amf/amfnd/main.cc b/src/amf/amfnd/main.cc index 
d7857fa..6d9ee95 100644
--- a/src/amf/amfnd/main.cc
+++ b/src/amf/amfnd/main.cc
@@ -164,6 +164,7 @@ static void new_handler() {
 
 int main(int argc, char *argv[]) {
   uint32_t error;
+  char *val;
 
   // function to be called if new fails. The alternative of using catch of
   // std::bad_alloc will unwind the stack and thus no call chain will be @@ 
-179,7 +180,13 @@ int main(int argc, char *argv[]) {
     goto done;
   }
 
-  daemonize_as_user("root", argc, argv);
+  if ((val = getenv("AMFND_NON_ROOT")) != nullptr) {
+    daemonize(argc, argv);
+    TRACE("AMFND will run as non-root");  } else {
+    daemonize_as_user("root", argc, argv);
+    TRACE("AMFND will run as root");
+  }
 
   // Enable long DN
   if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
--
2.7.4



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to