summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristoph Lipka <clipka@jp.adit-jv.com>2017-02-02 15:04:24 +0900
committerChristoph Lipka <clipka@jp.adit-jv.com>2017-02-02 15:04:24 +0900
commitfc91110918e948b006fdd18d9851a95c00fc95c3 (patch)
tree7d396bfaf8516cb69b2eeec37338c59d40eb9363 /src
parenta961dba0013ed2119aa719546c63212459753549 (diff)
downloadDLT-daemon-fc91110918e948b006fdd18d9851a95c00fc95c3.tar.gz
CMake Option: Trigger segmentation fault in case of FATAL log
When the user library receives a log with log level DLT_LOG_FATAL it triggers a segmentation fault to provide information to the developer via tools like coredump. Signed-off-by: Christoph Lipka <clipka@jp.adit-jv.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/dlt_user.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 0b00070..713bea3 100644
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -63,6 +63,18 @@
#include "dlt_user_shared_cfg.h"
#include "dlt_user_cfg.h"
+#ifdef DLT_FATAL_LOG_RESET_ENABLE
+#define DLT_LOG_FATAL_RESET_TRAP(LOGLEVEL) \
+ do { \
+ if (LOGLEVEL == DLT_LOG_FATAL) { \
+ int *p = NULL; \
+ *p = 0; \
+ } \
+ } while(0)
+#else /* DLT_FATAL_LOG_RESET_ENABLE */
+#define DLT_LOG_FATAL_RESET_TRAP(LOGLEVEL)
+#endif /* DLT_FATAL_LOG_RESET_ENABLE */
+
static DltUser dlt_user;
static bool dlt_user_initialised = false;
static int dlt_user_freeing = 0;
@@ -1420,6 +1432,8 @@ inline DltReturnValue dlt_user_log_write_start(DltContext *handle, DltContextDat
DltReturnValue dlt_user_log_write_start_id(DltContext *handle, DltContextData *log, DltLogLevelType loglevel, uint32_t messageid)
{
+ DLT_LOG_FATAL_RESET_TRAP(loglevel);
+
// check nullpointer
if (handle == NULL || log == NULL)
return DLT_RETURN_WRONG_PARAMETER;