In case of missing file, the JniTrace was crashing with segfault. The file
can be missing when CPU is offline during the trace capture.
---
ltt/jni_interface.c | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/ltt/jni_interface.c b/ltt/jni_interface.c
index d1bd993..0d46a1f 100644
--- a/ltt/jni_interface.c
+++ b/ltt/jni_interface.c
@@ -285,8 +285,11 @@ void g_datalist_foreach_addTracefilesOfTrace(GQuark name,
gpointer data, gpointe
tracefile = &g_array_index(tracefile_array, LttTracefile, i);
newPtr = CONVERT_PTR_TO_JLONG(tracefile);
-
- (*args->env)->CallVoidMethod(args->env, args->jobj,
accessFunction, (*args->env)->NewStringUTF(args->env,
g_quark_to_string(tracefile->name) ), newPtr );
+
+ /* Only process online CPUs with backing tracefile */
+ if (tracefile->cpu_online) {
+ (*args->env)->CallVoidMethod(args->env, args->jobj,
accessFunction, (*args->env)->NewStringUTF(args->env,
g_quark_to_string(tracefile->name) ), newPtr );
+ }
}
}
@@ -315,13 +318,15 @@ void g_datalist_foreach_saveTracefilesTime(GQuark name,
gpointer data, gpointer
for (i=0; i<tracefile_array->len; i++) {
tracefile = &g_array_index(tracefile_array, LttTracefile, i);
- /* Allocate a new LttTime for each tracefile (so it won't
change if the tracefile seek somewhere else) */
- savedData = (struct saveTimeAndTracefile*)malloc(
sizeof(struct saveTimeAndTracefile) );
- savedData->time.tv_sec = tracefile->event.event_time.tv_sec;
- savedData->time.tv_nsec = tracefile->event.event_time.tv_nsec;
- savedData->tracefile = tracefile;
- /* Append the saved data to the array */
- g_array_append_val(save_array, savedData);
+ if (tracefile->cpu_online) {
+ /* Allocate a new LttTime for each
tracefile (so it won't change if the tracefile seek somewhere else) */
+ savedData = (struct
saveTimeAndTracefile*)malloc( sizeof(struct saveTimeAndTracefile) );
+ savedData->time.tv_sec =
tracefile->event.event_time.tv_sec;
+ savedData->time.tv_nsec =
tracefile->event.event_time.tv_nsec;
+ savedData->tracefile = tracefile;
+ /* Append the saved data to the array */
+ g_array_append_val(save_array,
savedData);
+ }
}
}
--
1.7.1
_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev