Hi! Some comments:
It seems that if you put it as a static const char* xyz = "ABC", then the string will be a read-only string that is only present in the executable and doesn't get copied into the core dump. To make sure the string ends up in the core dump, you could allocate it dynamically by doing something like this: static const char* internal_version_id_; .... internal_version_id_ = strdup("@(#) $Id: " INTERNAL_VERSION_ID " $"); syslog(LOG_NOTICE, "Internal version id: %s", INTERNAL_VERSION_ID); Also, in the code above I have added "@(#) $Id: " as a prefix, so that the id string can be identified by running the "ident" or "what" command on the core dump. This feature is not specific to AMF, so the strdup() command should not be run in AMFD, but rather in some library function that is executed by all services. Also, the modifications to Makefile.common look a bit strange. It seems to work, but I find it more natural to do it this way: AM_CFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC @OSAF_HARDEN_FLAGS@ -DINTERNAL_VERSION_ID='"@INTERNAL_VERSION_ID@"' regards, Anders Widell 2013-12-19 09:22, Hans Nordeback skrev: > Makefile.common | 4 ++-- > configure.ac | 2 ++ > osaf/services/saf/amf/amfd/main.cc | 4 ++++ > osaf/services/saf/amf/amfnd/main.cc | 4 ++++ > 4 files changed, 12 insertions(+), 2 deletions(-) > > > Current changeset can be generated and visible in the syslog and in the > file in question to improve fault analyse. > > diff --git a/Makefile.common b/Makefile.common > --- a/Makefile.common > +++ b/Makefile.common > @@ -12,8 +12,8 @@ AM_CPPFLAGS = \ > $(CORE_INCLUDES) \ > $(all_includes) > > -AM_CFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC @OSAF_HARDEN_FLAGS@ > -AM_CXXFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC > -D__STDC_FORMAT_MACROS @OSAF_HARDEN_FLAGS@ > +AM_CFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC @OSAF_HARDEN_FLAGS@ > -DINTERNAL_VERSION_ID='"$(INTERNAL_VERSION_ID)"' > +AM_CXXFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC > -D__STDC_FORMAT_MACROS @OSAF_HARDEN_FLAGS@ > -DINTERNAL_VERSION_ID='"$(INTERNAL_VERSION_ID)"' > AM_LDFLAGS = -ldl -lrt -lpthread > > # > diff --git a/configure.ac b/configure.ac > --- a/configure.ac > +++ b/configure.ac > @@ -32,6 +32,8 @@ AC_USE_SYSTEM_EXTENSIONS > OPENSAF_LIB_VERSION=0:0:0 > AC_SUBST([OPENSAF_LIB_VERSION]) > > +AC_SUBST([INTERNAL_VERSION_ID],[$(hg parent --template "{rev}:{node|short}") > ]) > + > # FIXME: Until the m4 macro gets cleaned for DSO symbol tests and not > executable > AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "yes" = "yes") > #m4_include([m4/linker-script.m4]) > diff --git a/osaf/services/saf/amf/amfd/main.cc > b/osaf/services/saf/amf/amfd/main.cc > --- a/osaf/services/saf/amf/amfd/main.cc > +++ b/osaf/services/saf/amf/amfd/main.cc > @@ -63,6 +63,8 @@ enum { > FD_IMM // must be last > }; > > +static const char* internal_version_id_ = INTERNAL_VERSION_ID; > + > // Singleton Control Block. Statically allocated > static AVD_CL_CB _control_block; > > @@ -627,6 +629,8 @@ static void main_loop(void) > // will unwind the stack and thus no call chain will be available. > std::set_new_handler(new_handler); > > + syslog(LOG_NOTICE, "Internal version id: %s", internal_version_id_); > + > mbx_fd = ncs_ipc_get_sel_obj(&cb->avd_mbx); > daemon_sigterm_install(&term_fd); > > diff --git a/osaf/services/saf/amf/amfnd/main.cc > b/osaf/services/saf/amf/amfnd/main.cc > --- a/osaf/services/saf/amf/amfnd/main.cc > +++ b/osaf/services/saf/amf/amfnd/main.cc > @@ -37,6 +37,8 @@ > #define FD_CLM 2 > #define FD_MBCSV 3 > > +static const char* internal_version_id_ = INTERNAL_VERSION_ID; > + > static NCS_SEL_OBJ term_sel_obj; /* Selection object for TERM signal events > */ > > static void avnd_evt_process(AVND_EVT *); > @@ -551,6 +553,8 @@ void avnd_main_process(void) > > TRACE_ENTER(); > > + syslog(LOG_NOTICE, "Internal version id: %s", internal_version_id_); > + > if (avnd_create() != NCSCC_RC_SUCCESS) { > LOG_ER("avnd_create failed"); > goto done; ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel