[SATYR PATCH] Do not include unknown addresses in core stacktraces

Martin Milata mmilata at redhat.com
Wed Jul 24 14:15:32 UTC 2013


Closes #96.

Signed-off-by: Martin Milata <mmilata at redhat.com>
---
 lib/core_frame.c | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/lib/core_frame.c b/lib/core_frame.c
index a75f859..bb4f576 100644
--- a/lib/core_frame.c
+++ b/lib/core_frame.c
@@ -359,9 +359,13 @@ char *
 sr_core_frame_to_json(struct sr_core_frame *frame)
 {
     struct sr_strbuf *strbuf = sr_strbuf_new();
-    sr_strbuf_append_strf(strbuf,
-                          "{   \"address\": %"PRIu64"\n",
-                          frame->address);
+
+    if (frame->address != -1)
+    {
+        sr_strbuf_append_strf(strbuf,
+                              ",   \"address\": %"PRIu64"\n",
+                              frame->address);
+    }
 
     if (frame->build_id)
     {
@@ -370,9 +374,12 @@ sr_core_frame_to_json(struct sr_core_frame *frame)
         sr_strbuf_append_str(strbuf, "\n");
     }
 
-    sr_strbuf_append_strf(strbuf,
-                          ",   \"build_id_offset\": %"PRIu64"\n",
-                          frame->build_id_offset);
+    if (frame->build_id_offset != -1)
+    {
+        sr_strbuf_append_strf(strbuf,
+                              ",   \"build_id_offset\": %"PRIu64"\n",
+                              frame->build_id_offset);
+    }
 
     if (frame->function_name)
     {
@@ -395,6 +402,11 @@ sr_core_frame_to_json(struct sr_core_frame *frame)
         sr_strbuf_append_str(strbuf, "\n");
     }
 
+    if (strbuf->len > 0)
+        strbuf->buf[0] = '{';
+    else
+        sr_strbuf_append_char(strbuf, '{');
+
     sr_strbuf_append_char(strbuf, '}');
     return sr_strbuf_free_nobuf(strbuf);
 }
-- 
1.7.11.7



More information about the Crash-catcher mailing list