Project

General

Profile

Actions

Bug #827

closed

Babeltrace prints an error and segfaults if SIGTERM is received while adding traces in live mode.

Added by Jérémie Galarneau over 10 years ago. Updated almost 10 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Julien Desfossez
Category:
-
Target version:
Start date:
08/18/2014
Due date:
% Done:

100%

Estimated time:

Description

Babeltrace reports an error and segfaults when SIGTERM (ctrl-c) is used while adding traces in live mode.

To reproduce, simply connect to a live session and use "ctrl-c" to exit before events are output to the console. The session must be started to reproduce the crash.

[error] Stream 18446744073709551615 is not declared in metadata.
[error] Open file mmap stream error.
[error] [Context] Cannot open_mmap_trace of format ctf.

[error] Error adding trace
Segmentation Fault

The problem appears to be caused by the failure to handle an error in packet_seek in the prepare_mmap_stream_definition() function (formats/ctf/ctf.c:2257). This leaves the stream_id uninitialized.

Moreover, the error is not reported to the calling code since add_traces() (see formats/lttng-live/lttng-live-comm.c:1357) does not report an error. This function is always used by g_hash_table_foreach() which needs a function which does not return.

The fix shall ensure that we propagate the error from prepare_mmap_stream_definition() and call add_traces() explicitly by iterating over the hash tables and handle errors as we go.

Back trace leading to the segfault:

Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `babeltrace -i lttng-live net://127.0.0.1/host/XThink/auto-20140812-140513'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f0a413eb6b5 in bt_iter_init (iter=0x20f7c70, ctx=0x20fa1c0, begin_pos=0x7fff887903e0, end_pos=0x0) at iterator.c:740
740        for (i = 0; i < ctx->tc->array->len; i++) {
(gdb) bt
#0  0x00007f0a413eb6b5 in bt_iter_init (iter=0x20f7c70, ctx=0x20fa1c0, begin_pos=0x7fff887903e0, end_pos=0x0) at iterator.c:740
#1  0x00007f0a411a9c91 in bt_ctf_iter_create (ctx=0x20fa1c0, begin_pos=0x7fff887903e0, end_pos=0x0) at iterator.c:53
#2  0x00007f0a40788717 in lttng_live_read (ctx=0x20f9e90) at lttng-live-comm.c:1662
#3  0x00007f0a407845e2 in lttng_live_open_trace_read (path=0x7fff88790c86 "net://127.0.0.1/host/XThink/auto-20140812-140513") at lttng-live-plugin.c:233
#4  0x00007f0a40784703 in lttng_live_open_trace (path=0x7fff88790c86 "net://127.0.0.1/host/XThink/auto-20140812-140513", flags=0, packet_seek=0x0, metadata_fp=0x0)
    at lttng-live-plugin.c:271
#5  0x00007f0a413eba99 in bt_context_add_trace (ctx=0x20f6ad0, path=0x7fff88790c86 "net://127.0.0.1/host/XThink/auto-20140812-140513", format_name=0x20f1e80 "lttng-live", 
    packet_seek=0x0, stream_list=0x0, metadata=0x0) at context.c:95
#6  0x0000000000402b8b in bt_context_add_traces_recursive (ctx=0x20f6ad0, path=0x7fff88790c86 "net://127.0.0.1/host/XThink/auto-20140812-140513", 
    format_str=0x20f1e80 "lttng-live", packet_seek=0x0) at babeltrace.c:507
#7  0x0000000000403367 in main (argc=4, argv=0x7fff887906c8) at babeltrace.c:736

This happens because the array in the TraceCollection is NULL.

Actions

Also available in: Atom PDF