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

Reply via email to