[Title] fix bug for launch problem
authorgreatim <jaewon81.lim@samsung.com>
Fri, 19 Apr 2013 13:53:52 +0000 (22:53 +0900)
committergreatim <jaewon81.lim@samsung.com>
Fri, 19 Apr 2013 13:53:52 +0000 (22:53 +0900)
[Desc.]
[Issue]

Change-Id: I6999efccbe56c3857a79a2057a53b47b3d398004

daemon/daemon.c
daemon/daemon.h
daemon/main.c
daemon/threads.c
packaging/dynamic-analysis-manager.spec

index db7bf57..42ea315 100644 (file)
@@ -86,6 +86,7 @@ static void setEmptyTargetSlot(int index)
                manager.target[index].recv_thread = -1;
                manager.target[index].allocmem = 0;
                manager.target[index].starttime = 0;
+               manager.target[index].initial_log = 0;
                if(manager.target[index].event_fd != -1)
                        close(manager.target[index].event_fd);
                manager.target[index].event_fd = -1;
@@ -560,6 +561,7 @@ static int targetEventHandler(int epollfd, int index, uint64_t msg)
                        log.length = sprintf(log.data, "%d`,%Lu", manager.target[index].pid, manager.target[index].starttime);
                }
 
+               manager.target[index].initial_log = 1;
                sendDataToHost(&log);
        }
 
index 4c70209..d3d6cb7 100644 (file)
@@ -162,6 +162,7 @@ typedef struct
        int                             socket;                 // written only by main thread
        pthread_t               recv_thread;    // written only by main thread
        int                             event_fd;               // for thread communication (from recv thread to main thread)
+       int                             initial_log;    // written only by main thread
 } __da_target_info;
 
 typedef struct
index f3b78f8..3c14cd2 100644 (file)
@@ -260,6 +260,7 @@ static int initializeManager()
                manager.target[i].socket = -1;
                manager.target[i].event_fd = -1;
                manager.target[i].recv_thread = -1;
+               manager.target[i].initial_log = 0;
                manager.target[i].allocmem = 0;
                manager.target[i].starttime = 0;
        }
index 1c50934..d16432b 100644 (file)
@@ -46,6 +46,7 @@
 static void* recvThread(void* data)
 {
        int index = (int)data;
+       int pass = 0;
        uint64_t event;
        ssize_t recvLen;
        msg_t log;
@@ -126,6 +127,12 @@ static void* recvThread(void* data)
                        write(manager.target[index].event_fd, &event, sizeof(uint64_t));
                        break;
                }
+               else if(log.type == MSG_MSG)
+               {
+                       // don't send to host
+                       LOGI("EXTRA MSG %d|%d|%s\n", log.type, log.length, log.data);
+                       continue;
+               }
 #ifdef PRINT_TARGET_LOG
                else if(log.type == MSG_LOG)
                {
@@ -153,6 +160,15 @@ static void* recvThread(void* data)
 #endif
 
                // any message before MSG_PID message arrived did not be sent to host
+               if(unlikely(pass == 0))
+               {
+                       while(manager.target[index].initial_log == 0)
+                       {
+                               sleep(0);
+                       }
+               }
+               pass = 1;
+
                if(manager.target[index].pid != -1)
                        sendDataToHost(&log);
        }
index ebdd41a..9ba2e96 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dynamic-analysis-manager
 Summary:    dynamic analyzer manager
-Version:    2.1.1
+Version:    2.1.2
 Release:    1
 Group:      System/Libraries
 License:       Apache License, Version 2