diff --git a/scripts/pybootchartgui/pybootchartgui/draw.py b/scripts/pybootchartgui/pybootchartgui/draw.py
index 16830fa..1b872de 100644
--- a/scripts/pybootchartgui/pybootchartgui/draw.py
+++ b/scripts/pybootchartgui/pybootchartgui/draw.py
@@ -287,32 +287,33 @@ def render(ctx, res):
 
         offset = min(res.start.keys())
         for s in sorted(res.start.keys()):
-            task = res.start[s].split(":")[1]
-            #print res.start[s]
-            #print res.processes[res.start[s]][1]
-            #print s
-            x = (s - offset) * sec_w
-            w = ((res.processes[res.start[s]][1] - s) * sec_w)
-
-            #print "proc at %s %s %s %s" % (x, y, w, proc_h)
-            col = None
-            if task == "do_compile":
-                col = TASK_COLOR_COMPILE
-            elif task == "do_configure":
-                col = TASK_COLOR_CONFIGURE
-            elif task == "do_install":
-                col = TASK_COLOR_INSTALL
-            elif task == "do_package":
-                col = TASK_COLOR_PACKAGE
-            elif task == "do_populate_sysroot":
-                col = TASK_COLOR_SYSROOT
-
-            draw_rect(ctx, PROC_BORDER_COLOR, (x, y, w, proc_h))
-            if col:
-                draw_fill_rect(ctx, col, (x, y, w, proc_h))
-
-            draw_label_in_box(ctx, PROC_TEXT_COLOR, res.start[s], x, y + proc_h - 4, w, proc_h)
-            y = y + proc_h
+            for val in sorted(res.start[s]):
+                task = val.split(":")[1]
+                #print val
+                #print res.processes[val][1]
+                #print s
+                x = (s - offset) * sec_w
+                w = ((res.processes[val][1] - s) * sec_w)
+
+                #print "proc at %s %s %s %s" % (x, y, w, proc_h)
+                col = None
+                if task == "do_compile":
+                    col = TASK_COLOR_COMPILE
+                elif task == "do_configure":
+                    col = TASK_COLOR_CONFIGURE
+                elif task == "do_install":
+                    col = TASK_COLOR_INSTALL
+                elif task == "do_package":
+                    col = TASK_COLOR_PACKAGE
+                elif task == "do_populate_sysroot":
+                    col = TASK_COLOR_SYSROOT
+
+                draw_rect(ctx, PROC_BORDER_COLOR, (x, y, w, proc_h))
+                if col:
+                    draw_fill_rect(ctx, col, (x, y, w, proc_h))
+
+                draw_label_in_box(ctx, PROC_TEXT_COLOR, val, x, y + proc_h - 4, w, proc_h)
+                y = y + proc_h
 
 	# draw process boxes
 	#draw_process_bar_chart(ctx, proc_tree, curr_y + bar_h, w, h)
diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py
index c64eba0..a0f6e8e 100644
--- a/scripts/pybootchartgui/pybootchartgui/parsing.py
+++ b/scripts/pybootchartgui/pybootchartgui/parsing.py
@@ -184,9 +184,16 @@ def _do_parse(state, filename, file):
         elif line.startswith("Ended:"):
             end = int(float(line.split()[-1]))
     if start and end and (end - start) > 8:
+        k = pn + ":" + task
         state.processes[pn + ":" + task] = [start, end]
-        state.start[start] = pn + ":" + task
-        state.end[end] = pn + ":" + task
+        if start not in state.start:
+            state.start[start] = []
+        if k not in state.start[start]:
+            state.start[start].append(pn + ":" + task)
+        if end not in state.end:
+            state.end[end] = []
+        if k not in state.end[end]:
+            state.end[end].append(pn + ":" + task)
     return state
 
 def parse_file(state, filename):
@@ -248,12 +255,18 @@ def split_res(res, n):
                 #state.processes[pn + ":" + task] = [start, end]
                 #state.start[start] = pn + ":" + task
                 #state.end[end] = pn + ":" + task
-                p = res.start[s_list[i]]
-                s = s_list[i]
-                e = res.processes[p][1]
-                state.processes[p] = [s, e]
-                state.start[s] = p
-                state.end[e] = p
+                for p in res.start[s_list[i]]:
+                    s = s_list[i]
+                    e = res.processes[p][1]
+                    state.processes[p] = [s, e]
+                    if s not in state.start:
+                        state.start[s] = []
+                    if p not in state.start[s]:
+                        state.start[s].append(p)
+                    if e not in state.end:
+                        state.end[e] = []
+                    if p not in state.end[e]:
+                        state.end[e].append(p)
             start = end
             end = end + frag_size
             if end > len(s_list):
