gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20130 - in monkey/branches/MonkeyBacktracking/monkey: . sr


From: gnunet
Subject: [GNUnet-SVN] r20130 - in monkey/branches/MonkeyBacktracking/monkey: . src/monkey
Date: Wed, 29 Feb 2012 00:02:19 +0100

Author: safey
Date: 2012-02-29 00:02:19 +0100 (Wed, 29 Feb 2012)
New Revision: 20130

Added:
   monkey/branches/MonkeyBacktracking/monkey/monkey_build_script
Modified:
   monkey/branches/MonkeyBacktracking/monkey/src/monkey/Makefile.am
   monkey/branches/MonkeyBacktracking/monkey/src/monkey/action_api.c
   monkey/branches/MonkeyBacktracking/monkey/src/monkey/edb_api.c
   monkey/branches/MonkeyBacktracking/monkey/src/monkey/xml_writer.c
Log:
Monkey and Action API compile again.
Restoring producing XML report for Null Pointer Exception bugs.
New Action API with stack trace computed recursively.

Added: monkey/branches/MonkeyBacktracking/monkey/monkey_build_script
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/monkey_build_script               
                (rev 0)
+++ monkey/branches/MonkeyBacktracking/monkey/monkey_build_script       
2012-02-28 23:02:19 UTC (rev 20130)
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+echo "################## UNINSTALLING MONKEY ##################"
+sudo make uninstall
+echo "################## CLEANING WORKING DIRECTORY ###########"
+sudo make clean
+sudo make distclean
+echo "################## BOOTSTRAPPING ########################"
+./bootstrap
+echo "################## CONFIGURING MONKEY ###################"
+CFLAGS="-g -O0" ./configure
+echo "################## BUILDING MONKEY ######################"
+make
+echo "################## INSTALLING MONKEY ####################"
+sudo make install
+

Modified: monkey/branches/MonkeyBacktracking/monkey/src/monkey/Makefile.am
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/src/monkey/Makefile.am    
2012-02-28 19:27:19 UTC (rev 20129)
+++ monkey/branches/MonkeyBacktracking/monkey/src/monkey/Makefile.am    
2012-02-28 23:02:19 UTC (rev 20130)
@@ -24,6 +24,7 @@
   monkey_edb.h
 
 libmonkeyedb_la_LIBADD = \
+  -lgnunetutil \
   -lsqlite3 \
   $(GN_LIBINTL) $(XLIB)  
 
@@ -32,9 +33,11 @@
   monkey_action.h
 
 libmonkeyaction_la_LIBADD = \
+  -lgnunetutil \
   $(GN_LIBINTL) $(XLIB)  
 
 libmonkeyxml_la_LIBADD = \
+  -lgnunetutil \
    $(GN_LIBINTL) $(XLIB)
    
 libmonkeyxml_la_SOURCES = \

Modified: monkey/branches/MonkeyBacktracking/monkey/src/monkey/action_api.c
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/src/monkey/action_api.c   
2012-02-28 19:27:19 UTC (rev 20129)
+++ monkey/branches/MonkeyBacktracking/monkey/src/monkey/action_api.c   
2012-02-28 23:02:19 UTC (rev 20130)
@@ -294,6 +294,8 @@
        {
          fileName = malloc (sizeof (struct FileName));
          fileName->name = strdup (token);
+         fileName->next = NULL;
+         fileName->prev = NULL;
          MONKEY_CONTAINER_DLL_insert (fileNameListHead, fileNameListTail,
                                       fileName);
          return 0;             /* OK */
@@ -352,6 +354,7 @@
   expression = malloc (sizeof (struct Expression));
   expression->expressionSyntax = strdup (colValues[0]);
   expression->lineNo = atoi (colValues[1]);
+  expression->expressionValue = NULL; expression->next = NULL; 
expression->prev = NULL;
 
   MONKEY_CONTAINER_DLL_insert (function->expressionListHead, 
function->expressionListTail,
                               expression);
@@ -380,7 +383,7 @@
   struct Expression *tmp = NULL;
   int expressionLength = 0;
 
-  tmp = expressionListHead;
+  tmp = function->expressionListHead;
   while (NULL != tmp)
     {
       if ((tmp->lineNo == function->line)
@@ -495,20 +498,41 @@
        return MONKEY_OK;
 }
 
+static void printTrace() {
+       struct Function *functionPtr = trace->functionListHead;
+       struct Expression *expressionPtr;
+       printf("Program Stack Trace:\n");
+       while (NULL != functionPtr) {
+               printf("Function: %s, file: %s, line: %d\n", functionPtr->name, 
functionPtr->file, functionPtr->line);
+               
printf("--------------------------------------------------------------------------------------------------\n");
+               printf("Expressions:\n");
 
+               expressionPtr = functionPtr->expressionListHead;
+               while (NULL != expressionPtr) {
+                       printf("%s = %s, line: %d\n", 
expressionPtr->expressionSyntax, (NULL == expressionPtr->expressionValue) ? "No 
Value" : expressionPtr->expressionValue , expressionPtr->lineNo);
+                       expressionPtr = expressionPtr->next;
+               }
+
+               functionPtr = functionPtr->next;
+       }
+       printf("############################## End Stack Trace 
######################################################\n\n");
+}
+
 int
 MONKEY_ACTION_inspect_expression_database (struct
                                                  MONKEY_ACTION_Context
                                                  *cntxt)
 {
-  struct MONKEY_EDB_Context *edbCntxt;
   int ret = MONKEY_OK;
   int endScope;
   const char *signalMeaning = cntxt->gdb_stop_reason->signal_meaning;
   struct Function *function = NULL;
+
+  /* Variables used across recursive calls */
   static int stackDepth = 0;
+  static struct MONKEY_EDB_Context *edbCntxt;
 
-  if (NULL != trace) {
+  if (NULL == trace) {
          trace = malloc(sizeof(struct Trace));
          trace->functionListHead = NULL;
          trace->functionListTail = NULL;
@@ -564,6 +588,7 @@
   function->line = cntxt->gdb_frames->line;
   function->name = cntxt->gdb_frames->func;
   function->file = cntxt->gdb_frames->file;
+  function->expressionListHead = NULL; function->expressionListTail = NULL; 
function->next = NULL; function->prev = NULL;
   MONKEY_CONTAINER_DLL_insert (trace->functionListHead, 
trace->functionListTail,
                                         function);
 
@@ -614,13 +639,14 @@
          ret = analyzeCustomFault (cntxt);
   }
 
+  printTrace();
+
   /* Now, dive deeper into the stack trace */
   cntxt->gdb_frames = cntxt->gdb_frames->next;
   if (NULL == cntxt->gdb_frames) {
          stackDepth = 0;
-         flushTrace(trace);
+         mi_disconnect(cntxt->gdb_handle);
          MONKEY_EDB_disconnect (edbCntxt);
-         mi_disconnect (cntxt->gdb_handle);
   } else {
          /* Recursively inspect the database for deeper frames */
          MONKEY_ACTION_inspect_expression_database(cntxt);
@@ -895,19 +921,31 @@
 MONKEY_ACTION_format_report_xml (struct MONKEY_ACTION_Context
                                        *cntxt) {
        struct MONKEY_XML_Node *node;
+       struct MONKEY_XML_Node *traceNode;
+       struct Function *functionPtr = trace->functionListHead;
+       struct Expression *expressionPtr;
 
        switch (cntxt->debug_mode) {
        case DEBUG_MODE_GDB:
                switch (cntxt->bug_detected) {
                case BUG_NULL_POINTER:
-                       cntxt->xmlReportRootNode = createXmlCrashNode("npe", 
cntxt->gdb_frames->func, cntxt->gdb_frames->line, cntxt->gdb_frames->file);
+                       cntxt->xmlReportRootNode = createXmlCrashNode("npe", 
functionPtr->name, functionPtr->line, functionPtr->file);
                        node = 
MONKEY_XML_WRITER_add_child(cntxt->xmlReportRootNode, 
createXmlSimpleNode("history"));
                        node = MONKEY_XML_WRITER_add_child(node, 
createXmlEpochStep(0));
-                       node = MONKEY_XML_WRITER_add_child(node, 
createXmlSimpleNode("trace"));
-                       node = MONKEY_XML_WRITER_add_child(node, 
createXmlFunctionNode(cntxt->gdb_frames->func, cntxt->gdb_frames->line, 
cntxt->gdb_frames->file, 0));
-                       node = MONKEY_XML_WRITER_add_child(node, 
createXmlSimpleNode("expressions"));
-                       node = MONKEY_XML_WRITER_add_child(node, 
createXmlExpressionNode(cntxt->gdb_null_variable, "NULL"));
+                       traceNode = MONKEY_XML_WRITER_add_child(node, 
createXmlSimpleNode("trace"));
+                       while (NULL != functionPtr) {
+                               node = MONKEY_XML_WRITER_add_child(traceNode, 
createXmlFunctionNode(functionPtr->name, functionPtr->line, functionPtr->file, 
functionPtr->depth));
+                               node = MONKEY_XML_WRITER_add_child(node, 
createXmlSimpleNode("expressions"));
 
+                               expressionPtr = functionPtr->expressionListHead;
+                               while (NULL != expressionPtr) {
+                                       MONKEY_XML_WRITER_add_child(node, 
createXmlExpressionNode(expressionPtr->expressionSyntax,
+                                                       (NULL == 
expressionPtr->expressionValue) ? "Not Evaluated" : 
expressionPtr->expressionValue)); // node = "expressions" node
+                                       expressionPtr = expressionPtr->next;
+                               }
+
+                               functionPtr = functionPtr->next;
+                       }
                        break;
                case BUG_CUSTOM:
                default:

Modified: monkey/branches/MonkeyBacktracking/monkey/src/monkey/edb_api.c
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/src/monkey/edb_api.c      
2012-02-28 19:27:19 UTC (rev 20129)
+++ monkey/branches/MonkeyBacktracking/monkey/src/monkey/edb_api.c      
2012-02-28 23:02:19 UTC (rev 20130)
@@ -192,6 +192,8 @@
     }
 
   err = sqlite3_exec (cntxt->db_handle, query, iter, iter_cls, &errMsg);
+  free (query);
+
   if (err)
     {
       fprintf(stderr,

Modified: monkey/branches/MonkeyBacktracking/monkey/src/monkey/xml_writer.c
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/src/monkey/xml_writer.c   
2012-02-28 19:27:19 UTC (rev 20129)
+++ monkey/branches/MonkeyBacktracking/monkey/src/monkey/xml_writer.c   
2012-02-28 23:02:19 UTC (rev 20130)
@@ -6,6 +6,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <assert.h>
+#include <string.h>
 #include "monkey_common.h"
 #include "monkey_xml_writer.h"
 
@@ -27,6 +28,7 @@
        struct XmlAttribute *attribute = malloc(sizeof(struct XmlAttribute));
        attribute->name = attrName;
        attribute->value  = attrValue;
+       attribute->next = NULL; attribute->prev = NULL;
        MONKEY_CONTAINER_DLL_insert_tail (node->attributeListHead, 
node->attributeListTail,
                                                         attribute);
        return MONKEY_OK;
@@ -67,6 +69,7 @@
 
 
 struct MONKEY_XML_Node* MONKEY_XML_WRITER_add_child(struct MONKEY_XML_Node 
*parent, struct MONKEY_XML_Node *child) {
+       child->next = NULL; child->prev = NULL;
        MONKEY_CONTAINER_DLL_insert_tail (parent->childrenListHead, 
parent->childrenListTail,
                                                 child);
        return child;
@@ -91,7 +94,10 @@
        else {
                fprintf(file, "<%s ", root->name);
                while (NULL != tmpAttribute) {
-                       fprintf(file, "%s=\"%s\" ", tmpAttribute->name, 
tmpAttribute->value);
+                       if (NULL != strchr(tmpAttribute->value, '"')) // if the 
Attribute value has double quotes, it should be displayed between single quotes 
instead of double quotes
+                               fprintf(file, "%s='%s' ", tmpAttribute->name, 
tmpAttribute->value);
+                       else
+                               fprintf(file, "%s=\"%s\" ", tmpAttribute->name, 
tmpAttribute->value);
                        tmpAttribute = tmpAttribute->next;
                }
                fprintf(file, ">\n");




reply via email to

[Prev in Thread] Current Thread [Next in Thread]