attach to a process in gui or textdump + fix get_proc returning NULL for filtering
[lttngtop.git] / src / iostreamtop.c
index 7c4a30d56aa3ed506073d6819fe347f8b9dbed33..d3172f0648a3a8f49e1f6107c9e6d8efb0b75f88 100644 (file)
@@ -197,6 +197,10 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
 
        tmp = get_proc(ctx, tid, comm, timestamp);
 
+       if (!tmp) {
+               err = -1;
+               goto end;
+       }
        if (tmp->syscall_info != NULL) {
                if (tmp->syscall_info->type == __NR_read
                        && ret > 0) {
@@ -223,6 +227,8 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
                g_free(tmp->syscall_info);
                tmp->syscall_info = NULL;
        }
+
+end:
        return err;
 }
 
@@ -266,7 +272,7 @@ enum bt_cb_ret handle_exit_syscall(struct bt_ctf_event *call_data,
        uint64_t ret, tid;
        uint64_t cpu_id;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -310,7 +316,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
        char *procname;
        int fd;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -329,10 +335,14 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
        }
 
        tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       if (!tmp)
+               goto end;
+
        tmp->syscall_info = create_syscall_info(__NR_write, cpu_id, tid, fd);
 
        insert_file(tmp, fd);
 
+end:
        return BT_CB_OK;
 
 error:
@@ -350,7 +360,7 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
        char *procname;
        int fd;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -369,10 +379,14 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
        }
 
        tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       if (!tmp)
+               goto end;
+
        tmp->syscall_info = create_syscall_info(__NR_read, cpu_id, tid, fd);
 
        insert_file(tmp, fd);
 
+end:
        return BT_CB_OK;
 
 error:
@@ -392,7 +406,7 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
        char *procname;
        char *file;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -411,10 +425,14 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
        }
 
        tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       if (!tmp)
+               goto end;
+
        tmp->syscall_info = create_syscall_info(__NR_open, cpu_id, tid, -1);
 
        tmp->files_history = create_file(tmp->files_history, file);
 
+end:
        return BT_CB_OK;
 
 error:
@@ -432,7 +450,7 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
        char *procname;
        int fd;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -450,9 +468,12 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
        }
 
        tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       if (!tmp)
+               goto end;
 
        close_file(tmp, fd);
 
+end:
        return BT_CB_OK;
 
 error:
@@ -470,7 +491,7 @@ enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data,
        char *file_name;
        int fd;
 
-       timestamp = bt_ctf_get_real_timestamp(call_data);
+       timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
                goto error;
 
@@ -502,10 +523,14 @@ enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data,
        }
 
        parent = get_proc_pid(&lttngtop, pid, pid, timestamp);
+       if (!parent)
+               goto end;
+
        parent->files_history = create_file(parent->files_history, file_name);
        file = parent->files_history->file;
        edit_file(parent, file, fd);
 
+end:
        return BT_CB_OK;
 
 error:
This page took 0.0239 seconds and 4 git commands to generate.