Most of the locations where bt_current_thread_clear_error() is called in
this patch need to be replaced with proper error handling, except in
finalization methods which cannot fail. This work will be done by a
subsequent patch.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I10fb2eb98f46e685e6abf563346a2750b46b01d9
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1613
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Simon Marchi <simon.marchi@efficios.com>
"%" PRId64 ", stream ID %" PRIu64 ")",
lttng_live_stream->name->str,
stream_class_id, stream_id);
"%" PRId64 ", stream ID %" PRIu64 ")",
lttng_live_stream->name->str,
stream_class_id, stream_id);
bt_stream_set_name(lttng_live_stream->stream,
lttng_live_stream->name->str);
}
bt_stream_set_name(lttng_live_stream->stream,
lttng_live_stream->name->str);
}
return lttng_live_stream->stream;
}
return lttng_live_stream->stream;
}
debug_info->destruction_listener_id);
if (remove_listener_status != BT_TRACE_REMOVE_LISTENER_STATUS_OK) {
BT_COMP_LOGE("Trace destruction listener removal failed.");
debug_info->destruction_listener_id);
if (remove_listener_status != BT_TRACE_REMOVE_LISTENER_STATUS_OK) {
BT_COMP_LOGE("Trace destruction listener removal failed.");
+ bt_current_thread_clear_error();
debug_info = g_hash_table_lookup(debug_it->debug_info_map, trace);
if (!debug_info) {
debug_info = g_hash_table_lookup(debug_it->debug_info_map, trace);
if (!debug_info) {
+ bt_trace_add_listener_status add_listener_status;
+
debug_info = debug_info_create(debug_it->debug_info_component,
trace, &debug_it->fd_cache);
g_hash_table_insert(debug_it->debug_info_map, (gpointer) trace,
debug_info);
debug_info = debug_info_create(debug_it->debug_info_component,
trace, &debug_it->fd_cache);
g_hash_table_insert(debug_it->debug_info_map, (gpointer) trace,
debug_info);
- bt_trace_add_destruction_listener(trace,
- trace_debug_info_remove_func, debug_it,
+ add_listener_status = bt_trace_add_destruction_listener(
+ trace, trace_debug_info_remove_func,
+ debug_it,
&debug_info->destruction_listener_id);
&debug_info->destruction_listener_id);
+ BT_ASSERT(add_listener_status == BT_TRACE_ADD_LISTENER_STATUS_OK);
}
q_event_name = g_quark_try_string(event_name);
}
q_event_name = g_quark_try_string(event_name);
BT_COMP_LOGE("Cannot set path component of \"bin\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
BT_COMP_LOGE("Cannot set path component of \"bin\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
+ bt_current_thread_clear_error();
}
append_status = bt_field_string_append(curr_field,
}
append_status = bt_field_string_append(curr_field,
BT_COMP_LOGE("Cannot set bin location component of \"bin\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
BT_COMP_LOGE("Cannot set bin location component of \"bin\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
+ bt_current_thread_clear_error();
}
} else {
set_status = bt_field_string_set_value(curr_field, "");
if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"bin\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
}
} else {
set_status = bt_field_string_set_value(curr_field, "");
if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"bin\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
+ bt_current_thread_clear_error();
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"func\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"func\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
+ bt_current_thread_clear_error();
BT_COMP_LOGE("Cannot set path component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
BT_COMP_LOGE("Cannot set path component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
+ bt_current_thread_clear_error();
}
append_status = bt_field_string_append(curr_field, ":");
}
append_status = bt_field_string_append(curr_field, ":");
BT_COMP_LOGE("Cannot set colon component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
BT_COMP_LOGE("Cannot set colon component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
+ bt_current_thread_clear_error();
}
append_status = bt_field_string_append(curr_field,
}
append_status = bt_field_string_append(curr_field,
BT_COMP_LOGE("Cannot set line number component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
BT_COMP_LOGE("Cannot set line number component of \"src\" "
"curr_field field's value: str-fc-addr=%p",
curr_field);
+ bt_current_thread_clear_error();
}
} else {
set_status = bt_field_string_set_value(curr_field, "");
if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"src\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
}
} else {
set_status = bt_field_string_set_value(curr_field, "");
if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"src\" curr_field field's value: "
"str-fc-addr=%p", curr_field);
+ bt_current_thread_clear_error();
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"bin\" bin_field field's value: "
"str-fc-addr=%p", bin_field);
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"bin\" bin_field field's value: "
"str-fc-addr=%p", bin_field);
+ bt_current_thread_clear_error();
}
status = bt_field_string_set_value(func_field, "");
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"func\" func_field field's value: "
"str-fc-addr=%p", func_field);
}
status = bt_field_string_set_value(func_field, "");
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"func\" func_field field's value: "
"str-fc-addr=%p", func_field);
+ bt_current_thread_clear_error();
}
status = bt_field_string_set_value(src_field, "");
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"src\" src_field field's value: "
"str-fc-addr=%p", src_field);
}
status = bt_field_string_set_value(src_field, "");
if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
BT_COMP_LOGE("Cannot set \"src\" src_field field's value: "
"str-fc-addr=%p", src_field);
+ bt_current_thread_clear_error();
if (!out_message) {
BT_COMP_LOGE("Error creating output stream end message: out-s-addr=%p",
out_stream);
if (!out_message) {
BT_COMP_LOGE("Error creating output stream end message: out-s-addr=%p",
out_stream);
}
/* Remove stream from trace mapping hashtable. */
trace_ir_mapping_remove_mapped_stream(debug_it->ir_maps, in_stream);
}
/* Remove stream from trace mapping hashtable. */
trace_ir_mapping_remove_mapped_stream(debug_it->ir_maps, in_stream);
if (!out_message) {
BT_COMP_LOGE("Error creating output packet end message: "
"out-p-addr=%p", out_packet);
if (!out_message) {
BT_COMP_LOGE("Error creating output packet end message: "
"out-p-addr=%p", out_packet);
}
/* Remove packet from data mapping hashtable. */
trace_ir_mapping_remove_mapped_packet(debug_it->ir_maps, in_packet);
}
/* Remove packet from data mapping hashtable. */
trace_ir_mapping_remove_mapped_packet(debug_it->ir_maps, in_packet);
if (status != BT_TRACE_SET_NAME_STATUS_OK) {
BT_COMP_LOGE("Cannot set trace's name: trace-addr=%p, name=\"%s\"",
out_trace, trace_name);
if (status != BT_TRACE_SET_NAME_STATUS_OK) {
BT_COMP_LOGE("Cannot set trace's name: trace-addr=%p, name=\"%s\"",
out_trace, trace_name);
+ bt_current_thread_clear_error();
BT_COMP_LOGE("Cannot set string field's value: "
"str-field-addr=%p, str=%s" PRId64,
out_field, str);
BT_COMP_LOGE("Cannot set string field's value: "
"str-field-addr=%p, str=%s" PRId64,
out_field, str);
+ bt_current_thread_clear_error();
+
BT_COMP_LOGE("Cannot set dynamic array field's "
"length field: field-addr=%p, "
"length=%" PRIu64, out_field, array_len);
BT_COMP_LOGE("Cannot set dynamic array field's "
"length field: field-addr=%p, "
"length=%" PRIu64, out_field, array_len);
+ bt_current_thread_clear_error();
BT_COMP_LOGE("Cannot select variant field's option field: "
"var-field-addr=%p, opt-index=%" PRId64,
out_field, in_selected_option_idx);
BT_COMP_LOGE("Cannot select variant field's option field: "
"var-field-addr=%p, opt-index=%" PRId64,
out_field, in_selected_option_idx);
+ bt_current_thread_clear_error();
}
in_option_field = bt_field_variant_borrow_selected_option_field_const(in_field);
}
in_option_field = bt_field_variant_borrow_selected_option_field_const(in_field);
{
struct trace_ir_data_maps *d_maps =
g_new0(struct trace_ir_data_maps, 1);
{
struct trace_ir_data_maps *d_maps =
g_new0(struct trace_ir_data_maps, 1);
+ bt_trace_add_listener_status add_listener_status;
+
if (!d_maps) {
BT_COMP_LOGE_STR("Error allocating trace_ir_maps");
goto error;
if (!d_maps) {
BT_COMP_LOGE_STR("Error allocating trace_ir_maps");
goto error;
d_maps->packet_map = g_hash_table_new_full(g_direct_hash,
g_direct_equal, NULL,(GDestroyNotify) bt_packet_put_ref);
d_maps->packet_map = g_hash_table_new_full(g_direct_hash,
g_direct_equal, NULL,(GDestroyNotify) bt_packet_put_ref);
- bt_trace_add_destruction_listener(in_trace, trace_ir_data_maps_remove_func,
- ir_maps, &d_maps->destruction_listener_id);
+ add_listener_status = bt_trace_add_destruction_listener(
+ in_trace, trace_ir_data_maps_remove_func,
+ ir_maps, &d_maps->destruction_listener_id);
+ BT_ASSERT(add_listener_status == BT_TRACE_ADD_LISTENER_STATUS_OK);
+
{
struct trace_ir_metadata_maps *md_maps =
g_new0(struct trace_ir_metadata_maps, 1);
{
struct trace_ir_metadata_maps *md_maps =
g_new0(struct trace_ir_metadata_maps, 1);
+ bt_trace_class_add_listener_status add_listener_status;
+
if (!md_maps) {
BT_COMP_LOGE_STR("Error allocating trace_ir_maps");
goto error;
if (!md_maps) {
BT_COMP_LOGE_STR("Error allocating trace_ir_maps");
goto error;
md_maps->clock_class_map = g_hash_table_new_full(g_direct_hash,
g_direct_equal, NULL, (GDestroyNotify) bt_clock_class_put_ref);
md_maps->clock_class_map = g_hash_table_new_full(g_direct_hash,
g_direct_equal, NULL, (GDestroyNotify) bt_clock_class_put_ref);
- bt_trace_class_add_destruction_listener(in_trace_class,
+ add_listener_status = bt_trace_class_add_destruction_listener(
+ in_trace_class,
trace_ir_metadata_maps_remove_func,
ir_maps, &md_maps->destruction_listener_id);
trace_ir_metadata_maps_remove_func,
ir_maps, &md_maps->destruction_listener_id);
+ BT_ASSERT(add_listener_status ==
+ BT_TRACE_CLASS_ADD_LISTENER_STATUS_OK);
+
BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, maps->log_level,
maps->self_comp,
"Trace destruction listener removal failed.");
BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, maps->log_level,
maps->self_comp,
"Trace destruction listener removal failed.");
+ bt_current_thread_clear_error();
BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, maps->log_level,
maps->self_comp,
"Trace destruction listener removal failed.");
BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, maps->log_level,
maps->self_comp,
"Trace destruction listener removal failed.");
+ bt_current_thread_clear_error();
in_trace_class_name = bt_trace_class_get_name(in_trace_class);
if (in_trace_class_name) {
in_trace_class_name = bt_trace_class_get_name(in_trace_class);
if (in_trace_class_name) {
- bt_trace_class_set_name(out_trace_class, in_trace_class_name);
+ bt_trace_class_set_name_status status;
+
+ status = bt_trace_class_set_name(out_trace_class,
+ in_trace_class_name);
+ if (status != BT_TRACE_CLASS_SET_NAME_STATUS_OK) {
+ bt_current_thread_clear_error();
+ }
if (details_tc_meta->tc_destruction_listener_id !=
UINT64_C(-1)) {
if (details_tc_meta->tc_destruction_listener_id !=
UINT64_C(-1)) {
- bt_trace_class_remove_destruction_listener(
- (const void *) key,
- details_tc_meta->tc_destruction_listener_id);
+ if (bt_trace_class_remove_destruction_listener(
+ (const void *) key,
+ details_tc_meta->tc_destruction_listener_id)) {
+ bt_current_thread_clear_error();
+ }
while (g_hash_table_iter_next(&iter, &key, &value)) {
struct details_trace *details_trace = value;
while (g_hash_table_iter_next(&iter, &key, &value)) {
struct details_trace *details_trace = value;
- bt_trace_remove_destruction_listener(
- (const void *) key,
- details_trace->trace_destruction_listener_id);
+ if (bt_trace_remove_destruction_listener(
+ (const void *) key,
+ details_trace->trace_destruction_listener_id)) {
+ bt_current_thread_clear_error();
+ }
}
g_hash_table_destroy(details_comp->traces);
}
g_hash_table_destroy(details_comp->traces);