babeltrace.git
4 years agoUpdate version to v1.4.4 v1.4.4
Jérémie Galarneau [Thu, 1 Feb 2018 03:02:35 +0000 (22:02 -0500)] 
Update version to v1.4.4

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: signedness error in python complements
Jérémie Galarneau [Thu, 1 Feb 2018 02:24:10 +0000 (21:24 -0500)] 
Fix: signedness error in python complements

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: handle packet_seek errors
Mathieu Desnoyers [Sun, 23 Aug 2015 03:50:56 +0000 (20:50 -0700)] 
Fix: handle packet_seek errors

This is needed to correctly handle SIGINT in live view mode. Without
handling this situation correctly, we can often see the following issue
upon SIGINT:

[error] Stream 18446744073709551615 is not declared in metadata.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: prevent calling adding the same trace recursively
Julien Desfossez [Thu, 23 Nov 2017 23:43:52 +0000 (18:43 -0500)] 
Fix: prevent calling adding the same trace recursively

add_one_trace may need to fetch new streams, which may lead to adding
new traces to the ctf_traces hashtable and recursively calling
add_one_trace. This is problematic because we cannot modify a hashtable
we are iterating on, and we cannot perform twice the add_one_trace for
the same trace.

This fix, ensures this situation cannot happen, by checking if the
number of traces changed during the iteration and by making sure a trace
is considered in_use as soon as we enter the add_one_trace function.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Acked-by: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
Tested-by: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: Make sure we have all the metadata streams before adding new traces
Julien Desfossez [Thu, 23 Nov 2017 23:00:14 +0000 (18:00 -0500)] 
Fix: Make sure we have all the metadata streams before adding new traces

The add_one_trace function needs to have a metadata stream for all the
known traces. If it does not, we could end up in situations where we
fetch new streams while adding a trace which causes a lot of problems.

Now we ensure we have all the metadata streams before adding the traces.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Acked-by: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
Tested-by: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoAdd missing debugging information in the live plugin
Julien Desfossez [Thu, 23 Nov 2017 21:54:44 +0000 (16:54 -0500)] 
Add missing debugging information in the live plugin

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: set stream id in HUP case
Mathieu Desnoyers [Tue, 25 Aug 2015 18:41:04 +0000 (14:41 -0400)] 
Fix: set stream id in HUP case

In the case where a stream is closed when we get its first index, we
still need a valid stream_id to assign it in the right stream (channel).
In this case, it is not useful afterwards, but the debug output has the
right value instead of -1ULL.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: Use list rather than ptr array for trace streams
Mathieu Desnoyers [Tue, 25 Aug 2015 16:35:27 +0000 (12:35 -0400)] 
Fix: Use list rather than ptr array for trace streams

This fixes stream removal on HUP.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: leak of streams
Mathieu Desnoyers [Tue, 25 Aug 2015 12:24:13 +0000 (08:24 -0400)] 
Fix: leak of streams

Streams can be added when we attach to a session and if new streams are
added while the session is running. We were overriding the session
streams array in get_new_stream, so at teardown we could leak the
streams that were added before that call. We now keep a list of all the
streams in the session and add each stream in that list in both code
paths.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: handle 0 session case in ask new streams
Mathieu Desnoyers [Tue, 25 Aug 2015 12:16:37 +0000 (08:16 -0400)] 
Fix: handle 0 session case in ask new streams

If all sessions are closed by the time we ask for new streams, we could
end up looping forever waiting for new streams, so we now check we are
still waiting for something before looping.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: break loop on getting metadata error
Mathieu Desnoyers [Wed, 19 Aug 2015 17:47:53 +0000 (10:47 -0700)] 
Fix: break loop on getting metadata error

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: return error on ask_new_stream when should quit
Mathieu Desnoyers [Tue, 18 Aug 2015 21:27:07 +0000 (14:27 -0700)] 
Fix: return error on ask_new_stream when should quit

Otherwise, the caller will try to continue adding partially set streams
to the trace.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: don't access missing ctf trace when getting metadata
Mathieu Desnoyers [Fri, 14 Aug 2015 18:55:11 +0000 (14:55 -0400)] 
Fix: don't access missing ctf trace when getting metadata

We can get metadata when still in the trace open functions, in which
case the ctf trace is not allocated nor available yet. This fixes a
segmentation fault in stress-test.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: lttng-live discarded event count after inactivity
Julien Desfossez [Tue, 9 Jan 2018 22:12:54 +0000 (17:12 -0500)] 
Fix: lttng-live discarded event count after inactivity

When a stream is inactive, the consumer produces fake indexes which are
beacons to let the viewer know a stream has not produced any data up to
a certain timestamp. These beacon are actually real packet indexes with
all the fields set to 0 except for the timestamp_end. Currently we keep
these beacons just like we keep real indexes. The problem is that when
we switch packet, we compare the events_discarded field in the index we
just received with the same field in the previous index. In the case
where a stream has been inactive, we have received inactivity beacons,
and set the discarded_event field to 0, so the difference with the next
real index might be wrong.

In fact, since the inactivity beacons are only used to push the
timestamp end of a stream, we don't need to keep them and we actually
need to keep most of the data from the real previous index. So we now
copy the entire prev_index into the cur_index when we receive an
inactivity beacon. We could refactor the code to avoid performing the
pointer swap of cur and prev indexes, but this implies a redesign of
much of the packet switching code which would affect other code paths.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: timegm compat on Solaris
Michael Jeanson [Mon, 13 Nov 2017 20:06:29 +0000 (15:06 -0500)] 
Fix: timegm compat on Solaris

On Solaris 11 setting TZ to an empty string before calling mktime will
in some circumstances do the conversion in localtime instead of UTC as
expected.

Replace the empty string by "UTC".

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agolttng-live: print discarded event and packet lost warnings on stderr
Mathieu Desnoyers [Thu, 28 Sep 2017 14:00:32 +0000 (10:00 -0400)] 
lttng-live: print discarded event and packet lost warnings on stderr

Reported-by: Liguang Li <liguang.lee6@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoUpdate version to v1.4.3 v1.4.3
Jérémie Galarneau [Fri, 4 Aug 2017 17:06:31 +0000 (13:06 -0400)] 
Update version to v1.4.3

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: unknown variable name in Python writer
Marie Martin [Fri, 4 Aug 2017 16:40:35 +0000 (12:40 -0400)] 
Fix: unknown variable name in Python writer

Signed-off-by: Marie Martin <marie.martin@etu.utc.fr>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix live-comm: only apply retry timeout for already seen inactive indexes.
Jonathan Rajotte [Mon, 24 Jul 2017 20:06:18 +0000 (16:06 -0400)] 
Fix live-comm: only apply retry timeout for already seen inactive indexes.

Tested-by: Anton Smyk <anton.smyk@itiviti.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix live-comm: merge TCP socket write-write sequence in a single write
Jonathan Rajotte [Mon, 24 Jul 2017 20:06:17 +0000 (16:06 -0400)] 
Fix live-comm: merge TCP socket write-write sequence in a single write

The live protocol implementation is often sending content
on TCP sockets in two separate writes. One to send a command header,
and the second one sending the command's payload. This was presumably
done under the assumption that it would not result in two separate
TCP packets being sent on the network (or that it would not matter).

Delayed ACK-induced delays were observed [1] on the second write of the
"write header, write payload" sequence and result in problematic
latency build-ups for live clients connected to moderately/highly
active sessions.

Fundamentaly, this problem arises due to the combination of Nagle's
algorithm and the delayed ACK mechanism which make write-write-read
sequences on TCP sockets problematic as near-constant latency is
expected when clients can keep-up with the event production rate.

In such a write-write-read sequence, the second write is held up until
the first write is acknowledged (TCP ACK). The solution implemented
by this patch bundles the writes into a single one [2].

[1] https://github.com/tbricks/wireshark-lttng-plugin
Basic Wireshark dissector for lttng-live by Anto Smyk from Itiviti
[2] https://lists.freebsd.org/pipermail/freebsd-net/2006-January/009527.html

Reported-by: Anton Smyk <anton.smyk@itiviti.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: use LDFLAGS instead of LIBS for python bindings
Michael Jeanson [Fri, 2 Jun 2017 15:56:44 +0000 (11:56 -0400)] 
Fix: use LDFLAGS instead of LIBS for python bindings

Turns out that contrary to what is documented some versions of distutils
don't honor the LIBS variable, use LDFLAGS instead.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 years agoFix: Add missing LIBS to python bindings
Michael Jeanson [Fri, 26 May 2017 18:25:37 +0000 (14:25 -0400)] 
Fix: Add missing LIBS to python bindings

Also move includes to CPPFLAGS.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoax_lib_elfutils -> bt_lib_elfutils
Philippe Proulx [Wed, 2 Nov 2016 06:01:30 +0000 (02:01 -0400)] 
ax_lib_elfutils -> bt_lib_elfutils

`ax` is a prefix for the GNU Autoconf Archive. `ax_lib_elfutils`
should be namespaced within the project here, with the `bt_` prefix.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agom4/ax_lib_elfutils.m4: use m4_default() for optional args.
Philippe Proulx [Wed, 2 Nov 2016 05:41:13 +0000 (01:41 -0400)] 
m4/ax_lib_elfutils.m4: use m4_default() for optional args.

The current macro code does not work because, if you provide 4
arguments to the macro, then `true_action` is not defined (but
it should be: it's the third argument).

Use m4_default() here to expand to a default value if the
argument does not exist.

Also use [:] instead of [] (good practice, safer for shells).

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agom4/ax_lib_elfutils.m4: add cache variable
Philippe Proulx [Wed, 2 Nov 2016 05:40:12 +0000 (01:40 -0400)] 
m4/ax_lib_elfutils.m4: add cache variable

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoBuild Python bindings with distutils for consistent installs
Francis Deslauriers [Tue, 11 Apr 2017 19:27:37 +0000 (15:27 -0400)] 
Build Python bindings with distutils for consistent installs

v5: Manually load shared objects used by the Babeltrace Python module

This patch changes the build system used to compile and install the
Python Bindings. Distutils is used to find the right install directory.
When the install directory generated from the install prefix is not in
the Python search path (PYTHONPATH), we print a warning explaining what
can be done to include it.
It uses Distutils which is part of the Python standard library.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoSet the minimum Python version to 3.0
Francis Deslauriers [Fri, 26 May 2017 13:20:41 +0000 (09:20 -0400)] 
Set the minimum Python version to 3.0

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: text output missing separator when printing the domain
Julien Desfossez [Fri, 17 Mar 2017 20:15:23 +0000 (16:15 -0400)] 
Fix: text output missing separator when printing the domain

With the "-f all" option, we expect to see
<hostname>:<domain>:<loglevel>, but instead we see
<hostname><domain>:<loglevel>.

Judging from the pattern of the other printed fields, the check for
"dom_print" variable seems to be missing when printing the domain.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoUpdate version to v1.4.2 v1.4.2
Jérémie Galarneau [Fri, 6 Jan 2017 20:31:38 +0000 (15:31 -0500)] 
Update version to v1.4.2

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: perform an explicit stdout flush in live even on empty packets
Jérémie Galarneau [Tue, 13 Dec 2016 17:17:10 +0000 (12:17 -0500)] 
Fix: perform an explicit stdout flush in live even on empty packets

This ensures that babeltrace makes the content of live buffers
visible even if the data packets received are empty.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoUpdate version to v1.4.1 v1.4.1
Jérémie Galarneau [Thu, 1 Dec 2016 23:14:09 +0000 (18:14 -0500)] 
Update version to v1.4.1

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agodebug info: Call register_event_debug_infos for all events
Simon Marchi [Sun, 19 Jun 2016 15:14:29 +0000 (11:14 -0400)] 
debug info: Call register_event_debug_infos for all events

The register_event_debug_infos function is responsible for setting the
debug_info_src field of the struct definition_integer representing the
"ip" context field.  This pointer is used later to print the
source and binary location of the tracepoint.

Currently, it's not called for the events that have a special meaning
for the debug info analysis (statedump start, dlopen, bin_info, etc).
This means that for these events, the debug_info_src pointer keeps the
value of the previous event from that stream (since the ip field is in
stream event context, there is one instance per stream), which leads to
wrong information and/or crash.  A crash can happen when the debug info
structures are cleared because a statedump start is encountered.
debug_info_src becomes a stale pointer and babeltrace tries to print a
string in free memory.

The fix is to call register_event_debug_infos for all events, which will
always set debug_info_src properly.  The events used to do the debug
info analysis are still regular events and have their own location
information.

The trace in bug #1018 shows a crash caused by this issue.

Here's an example of wrong info from the same trace:

... lttng_ust_statedump:bin_info: { cpu_id = 1 }, { vpid = 28991, ip = 0x7FD26665657D, debug_info = { bin = "libX11.so.6.3.0+0x213fa" } }, ...
... lttng_ust_statedump:build_id: { cpu_id = 1 }, { vpid = 28991, ip = 0x7FD266656656, debug_info = { bin = "libX11.so.6.3.0+0x213fa" } }, ...

We can see that the ip values are different, but the debug info refers
to the same location, which is impossible.  Here's the result with this
patch applied.

... lttng_ust_statedump:bin_info: { cpu_id = 1 }, { vpid = 28991, ip = 0x7FD26665657D, debug_info = { bin = "liblttng-ust.so.0.0.0+0x3557d", func = "trace_bin_info_cb+0xfa" } }, ...
... lttng_ust_statedump:build_id: { cpu_id = 1 }, { vpid = 28991, ip = 0x7FD266656656, debug_info = { bin = "liblttng-ust.so.0.0.0+0x35656", func = "trace_build_id_cb+0xbc" } }, ...

which seems more reasonnable.

Fixed #1018

Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoTypo: configure.ac implemenation -> implementation
Jérémie Galarneau [Mon, 25 Jul 2016 19:16:18 +0000 (15:16 -0400)] 
Typo: configure.ac implemenation -> implementation

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoconfigure: fix uuid support detection on static build
Samuel Martin [Wed, 1 Jun 2016 19:56:32 +0000 (21:56 +0200)] 
configure: fix uuid support detection on static build

This change adds uuid detection using pkg-config helper before falling
back on the standard AC_CHECK_LIB detection for platforms missing
pkg-config.

AC_CHECK_LIB function achieves its test by trying to link against the
requested library, without taking care of its dependency
requirements/flags that may differ between different targets.
Therefore, in case of static build, it can fail on the uuid detection
like [1], because the uuid's dependency flags (regarding gettext) are
missing.

Instead, using pkg-config to do the check will take care of getting and
setting all required flags.

This issue [1] has been triggered on Buildroot farms.

[1] http://autobuild.buildroot.net/results/43b/43b98ddf9eb44152ed9ac4a98d887af14831d8da/build-end.log

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoTests: no substitution needed for multi-trace intersection test
Jérémie Galarneau [Tue, 7 Jun 2016 16:09:27 +0000 (12:09 -0400)] 
Tests: no substitution needed for multi-trace intersection test

The use of AC_CONFIG_FILES on with src == dest causes the source
file to be deleted on make distclean.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoUpdate version to v1.4.0 v1.4.0
Jérémie Galarneau [Mon, 6 Jun 2016 18:26:09 +0000 (14:26 -0400)] 
Update version to v1.4.0

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoTests: dereference of NULL pointer on allocation failure
Jérémie Galarneau [Fri, 3 Jun 2016 11:21:29 +0000 (07:21 -0400)] 
Tests: dereference of NULL pointer on allocation failure

Reported by Coverity as:
CID 1354904 (#1 of 1): Dereference null return value (NULL_RETURNS)

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoTests: abort dwarf test on open() failure
Jérémie Galarneau [Fri, 3 Jun 2016 11:17:42 +0000 (07:17 -0400)] 
Tests: abort dwarf test on open() failure

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: lttng-live does not set a trace descriptor
Jérémie Galarneau [Thu, 2 Jun 2016 17:40:25 +0000 (13:40 -0400)] 
Fix: lttng-live does not set a trace descriptor

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoTests: Add missing --merge LOG_DRIVER_FLAGS
Jérémie Galarneau [Tue, 31 May 2016 11:31:55 +0000 (07:31 -0400)] 
Tests: Add missing --merge LOG_DRIVER_FLAGS

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: strerror_r behavior is glibc specific
Michael Jeanson [Mon, 30 May 2016 20:39:02 +0000 (16:39 -0400)] 
Fix: strerror_r behavior is glibc specific

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agosys/param.h is required for MAXNAMLEN on musl libc
Michael Jeanson [Mon, 30 May 2016 20:39:01 +0000 (16:39 -0400)] 
sys/param.h is required for MAXNAMLEN on musl libc

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: undefined bit shift operation when printing octal numbers
Jérémie Galarneau [Mon, 30 May 2016 18:39:27 +0000 (14:39 -0400)] 
Fix: undefined bit shift operation when printing octal numbers

Reported by Coverity as:
CID 1355338 (#1 of 1): Bad bit shift operation (BAD_SHIFT)

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: Wrong variable checked in bin_info_child_die_has_address
Jérémie Galarneau [Mon, 30 May 2016 14:22:45 +0000 (10:22 -0400)] 
Fix: Wrong variable checked in bin_info_child_die_has_address

"contains", which is an output pointer, is used instead of the
local boolean that is set by the call to
bt_dwarf_die_contains_addr.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: Only close valid fds in is_valid_debug_file
Michael Jeanson [Tue, 17 May 2016 19:43:59 +0000 (15:43 -0400)] 
Fix: Only close valid fds in is_valid_debug_file

Fixes coverity #1354901 and #1354902

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: Free die_name in bin_info_lookup_cu_function_name
Michael Jeanson [Tue, 17 May 2016 19:21:44 +0000 (15:21 -0400)] 
Fix: Free die_name in bin_info_lookup_cu_function_name

Fixes coverity #1354905

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 years agoFix: Don't dereference null ptr in error path
Michael Jeanson [Tue, 17 May 2016 19:09:03 +0000 (15:09 -0400)] 
Fix: Don't dereference null ptr in error path

Fixes coverity #1355339

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoStandardise spelling of debug info
Antoine Busque [Thu, 19 May 2016 16:21:29 +0000 (12:21 -0400)] 
Standardise spelling of debug info

Debug info being short for debugging information is two separate
words. Therefore, the debuginfo spelling is erroneous. Variables and
defines throughout the code and build system should therefore use
'debug_info' or 'DEBUG_INFO', whereas command-line options and file
names should use the 'debug-info' form. In free form text
(i.e. comments and documentation), 'debug info' should be used, or the
long form 'debugging information'.

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: typo in --disable-debug-info in configure error message
Antoine Busque [Thu, 19 May 2016 15:50:06 +0000 (11:50 -0400)] 
Fix: typo in --disable-debug-info in configure error message

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDocs: change --clock-raw to --clock-cycles
Jérémie Galarneau [Wed, 25 May 2016 13:37:39 +0000 (09:37 -0400)] 
Docs: change --clock-raw to --clock-cycles

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: segmentation fault with multi-trace having non-correlated clocks
Mathieu Desnoyers [Thu, 19 May 2016 22:24:23 +0000 (18:24 -0400)] 
Fix: segmentation fault with multi-trace having non-correlated clocks

This bugfix is extracted from commit

commit 61cf588beae752e5ddfc60b6b5310f769ac9e852
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Tue Feb 9 13:27:24 2016 -0500

    Handle negative time and offset from Epoch

Which was fixing this issue, amongst other things.

[ This fix should be applied to Babeltrace stable 1.3 and 1.4 only. ]

[ This v2 patch removes error checking that was introduced in v1. Since
  the callees don't distinguish between -ENOENT and -EINVAL errors,
  we don't know if we need to error out or not. Keep the original
  1.x behavior (no error checking). ]

Fixes: #790
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoUpdate version to v1.4.0-rc1 v1.4.0-rc1
Jérémie Galarneau [Fri, 13 May 2016 21:28:06 +0000 (17:28 -0400)] 
Update version to v1.4.0-rc1

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDisplay binary location even if source and symbol lookups fail
Jérémie Galarneau [Fri, 13 May 2016 21:10:38 +0000 (17:10 -0400)] 
Display binary location even if source and symbol lookups fail

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTests: Multi-trace stream intersection test
Jérémie Galarneau [Wed, 11 May 2016 19:45:46 +0000 (15:45 -0400)] 
Tests: Multi-trace stream intersection test

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoMove Python bindings to babeltrace subfolder
Jérémie Galarneau [Thu, 12 May 2016 16:43:22 +0000 (12:43 -0400)] 
Move Python bindings to babeltrace subfolder

This change reflects the arborescence used to install Babeltrace's
python bindings and allows Babeltrace's tests to use the normal
module name namespace.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agobootstrap: Standardize on autoreconf -vi
Jérémie Galarneau [Thu, 12 May 2016 16:43:22 +0000 (12:43 -0400)] 
bootstrap: Standardize on autoreconf -vi

Don't overwrite already generated files.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoChange behaviour of stream-intersection with multiple traces
Jérémie Galarneau [Wed, 11 May 2016 17:45:10 +0000 (13:45 -0400)] 
Change behaviour of stream-intersection with multiple traces

The stream-intersection currently results in the reading of
the intersection of every stream, in every trace of a Trace
Collection.

Since reading a TraceCollection returns the union of its traces,
the behaviour of this option is changed so that it returns the
union of each trace's individual "active" section, that is the
section for which all streams are active.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: ctf-text: signed base 8, 16 printout
Mathieu Desnoyers [Fri, 6 May 2016 20:08:57 +0000 (16:08 -0400)] 
Fix: ctf-text: signed base 8, 16 printout

Base 16 signed integer printout is buggy for 64-bit length: a shift of
64-bit is undefined.

Change printout of base 8 signed integer to match what is done for
base 16.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: respect signed integers' length when printing in hex base
Jérémie Galarneau [Tue, 28 Oct 2014 16:33:15 +0000 (12:33 -0400)] 
Fix: respect signed integers' length when printing in hex base

Make sure we don't print a full 64-bit sign-extended value
when printing a negative integer in hexadecimal base.

Fixes #848

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: debug-info feature enable/disable
Mathieu Desnoyers [Fri, 6 May 2016 17:39:51 +0000 (13:39 -0400)] 
Fix: debug-info feature enable/disable

Explicitly enabling the debug-info feature should not disable the
feature.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoPort: Add OSX mman.h compat
Michael Jeanson [Thu, 5 Nov 2015 17:51:54 +0000 (12:51 -0500)] 
Port: Add OSX mman.h compat

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoPort: Add OSX endian.h compat
Alexis Martin [Thu, 5 Nov 2015 17:51:53 +0000 (12:51 -0500)] 
Port: Add OSX endian.h compat

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoPort: Add OSX libuuid compat
Michael Jeanson [Thu, 5 Nov 2015 17:51:55 +0000 (12:51 -0500)] 
Port: Add OSX libuuid compat

OSX has the libuuid symbols built in the system libraries.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: swapped libelf and libdw names in configure error message
Antoine Busque [Thu, 5 May 2016 15:50:24 +0000 (11:50 -0400)] 
Fix: swapped libelf and libdw names in configure error message

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDon't use the .so extension on test assets
Michael Jeanson [Wed, 4 May 2016 18:36:19 +0000 (14:36 -0400)] 
Don't use the .so extension on test assets

Some packaging systems, such as dpkg-source in native mode used by
Debian's daily build system, will filter out files considered unclean
prior to the build. This behavior causes our test assets to be deleted
which, subsequently, fails the make check.

Since we do not require the .so extension and these files should be
treated as blobs, we rename them to "_so".

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: warnings on Solaris10
Michael Jeanson [Wed, 4 May 2016 17:02:49 +0000 (13:02 -0400)] 
Fix: warnings on Solaris10

Cast values to uint64_t before passing them to htobe64() because
the implementation on Solaris10 uses bitshifts and will complain
when passed 32bits values.

This fixes multiple warnings like:

lttng-live-comm.c:169:2: warning: left shift count >= width of type
  cmd.data_size = htobe64(sizeof(connect));

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoAdd missing generated tests to gitignore
Michael Jeanson [Wed, 4 May 2016 14:56:27 +0000 (10:56 -0400)] 
Add missing generated tests to gitignore

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: report error when lttng-live is provided with an IPv6 address
Jérémie Galarneau [Thu, 5 May 2016 15:43:45 +0000 (11:43 -0400)] 
Fix: report error when lttng-live is provided with an IPv6 address

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: overflow of signed integer results in undefined behaviour
Jérémie Galarneau [Tue, 3 May 2016 02:46:28 +0000 (22:46 -0400)] 
Fix: overflow of signed integer results in undefined behaviour

The expression "min_value = -((int64_t)1 << (size - 1))"

will result in a signed integer overflow when size is 64
((1ULL << 63) > LONG_MAX).

Note that larger sizes are unsupported and checked for in the setter.

Signed overflows result in undefined behaviour and llvm takes
advantage of this to optimize away the range check

"if (value < min_value || value > max_value) {"

Surprisingly, this was not catched by GCC, Coverity, scan-build or
cppcheck.

The fix consists in computing both bounds using an unsigned long long
type and, in the case of the lower bound, negating it (resulting in a
long long).

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: potential close() of uninitialized elf_fd
Jérémie Galarneau [Mon, 2 May 2016 20:27:58 +0000 (16:27 -0400)] 
Fix: potential close() of uninitialized elf_fd

elf_fd is uninitialized whenever bin is NULL.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: use of spaces instead of tabs in babeltrace.i.in
Jérémie Galarneau [Mon, 2 May 2016 20:39:20 +0000 (16:39 -0400)] 
Fix: use of spaces instead of tabs in babeltrace.i.in

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoSet version to 1.4.0-pre
Jérémie Galarneau [Mon, 2 May 2016 20:02:43 +0000 (16:02 -0400)] 
Set version to 1.4.0-pre

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoClean-up: add missing new line after end of function
Jérémie Galarneau [Mon, 2 May 2016 19:26:50 +0000 (15:26 -0400)] 
Clean-up: add missing new line after end of function

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoClean-up: remove extra newline in bin-info.c
Jérémie Galarneau [Mon, 2 May 2016 19:26:32 +0000 (15:26 -0400)] 
Clean-up: remove extra newline in bin-info.c

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoClean-up: fix comment style in bin-info.c
Jérémie Galarneau [Mon, 2 May 2016 19:26:08 +0000 (15:26 -0400)] 
Clean-up: fix comment style in bin-info.c

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoAdd tap-driver.sh from automake
Jérémie Galarneau [Fri, 29 Apr 2016 22:55:12 +0000 (18:55 -0400)] 
Add tap-driver.sh from automake

Solaris 11's automake does not include tap-driver.sh.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTests: skip certain bin-info tests on failure to prevent segfault
Antoine Busque [Fri, 29 Apr 2016 22:12:42 +0000 (18:12 -0400)] 
Tests: skip certain bin-info tests on failure to prevent segfault

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTypo: succesful* -> successful*
Jérémie Galarneau [Wed, 27 Apr 2016 21:11:08 +0000 (17:11 -0400)] 
Typo: succesful* -> successful*

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTests: strip ELF symbols from debuginfo-data executables with separate DWARF
Antoine Busque [Fri, 29 Apr 2016 22:13:39 +0000 (18:13 -0400)] 
Tests: strip ELF symbols from debuginfo-data executables with separate DWARF

Stripping the symbols prevents the framework from falling back to ELF
lookup should the separate DWARF files be missing, which would cause
tests to succeed when they should fail.

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoPython bindings: add has_intersection property to TraceCollection
Antoine Busque [Mon, 2 May 2016 19:50:02 +0000 (15:50 -0400)] 
Python bindings: add has_intersection property to TraceCollection

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoPython bindings: make intersect_mode read-only property
Antoine Busque [Mon, 2 May 2016 19:46:48 +0000 (15:46 -0400)] 
Python bindings: make intersect_mode read-only property

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTests: Add missing debuginfo files to dist
Michael Jeanson [Fri, 29 Apr 2016 21:05:31 +0000 (17:05 -0400)] 
Tests: Add missing debuginfo files to dist

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoUse tar-ustar format for dist
Michael Jeanson [Fri, 29 Apr 2016 20:58:14 +0000 (16:58 -0400)] 
Use tar-ustar format for dist

This is required to support file names longuer than 99 characters
when generating the dist tarball, which we require because of the
sphinx theme files in the python bindings documentation.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoTests: Replace prove by autotools tap runner
Michael Jeanson [Fri, 29 Apr 2016 18:35:06 +0000 (14:35 -0400)] 
Tests: Replace prove by autotools tap runner

This patch removes the dependency on the prove perl script
to run the TAP test suite. It replaces it with the autotools
shell TAP driver that only requires a shell and awk.

Custom arguments can be passed to the test runner with
env variables as follow:

  env LOG_DRIVER_FLAGS='--comments --ignore-exit' \
      TESTS='foo.test baz.test' make -e check

This tap driver also creates a log file for each test that
can then be used by another system to build a test report.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoCleanup test scripts
Michael Jeanson [Thu, 28 Apr 2016 20:15:14 +0000 (16:15 -0400)] 
Cleanup test scripts

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: Don't clean test scripts
Michael Jeanson [Thu, 28 Apr 2016 16:57:03 +0000 (12:57 -0400)] 
Fix: Don't clean test scripts

Test scripts are generated by configure, not make. Therefore, we do
not want a make clean to remove them. Let automake handle dist and
clean.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: Make test_dwarf and test_bin_info tests work out-of-tree
Simon Marchi [Thu, 28 Apr 2016 16:43:37 +0000 (12:43 -0400)] 
Fix: Make test_dwarf and test_bin_info tests work out-of-tree

When building out of tree, these tests fail to find the test data.
This patch makes them (their _complete wrappers, actually) generated
by Autoconf, so the proper path to the test data (which is in the
source directory) can be written.

We can also get rid of SCRIPT_LIST and it's custom rules.

Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoHandle test_ctf_writer_complete like the other tests scripts
Michael Jeanson [Thu, 28 Apr 2016 16:38:20 +0000 (12:38 -0400)] 
Handle test_ctf_writer_complete like the other tests scripts

Even if test_ctf_writer_complete doesn't require any substitutions,
handle it like the other test scripts which will be less error prone
and will allow to remove all the SCRIPT_LIST custom rules.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: let automake handle CLEAN and DIST
Simon Marchi [Thu, 28 Apr 2016 02:52:19 +0000 (22:52 -0400)] 
Fix: let automake handle CLEAN and DIST

Files test_seek_empty_packet and test_seek_big_trace are generated by
configuring, not by making.  Therefore, we do not want a make clean to
remove them.  Otherwise, doing...

  * make
  * make clean
  * make
  * make check

... fails.

Automake infers EXTRA_DIST and DISTCLEANFILES from AC_CONFIG_FILES.

Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: Remove test_seek_empty_packet and test_seek_big_trace from SCRIPT_LIST
Simon Marchi [Thu, 28 Apr 2016 02:52:18 +0000 (22:52 -0400)] 
Fix: Remove test_seek_empty_packet and test_seek_big_trace from SCRIPT_LIST

Since these files are generated by autoconf, they shouldn't be included
in SCRIPT_LIST, which is the list of scripts to copy from the source
directory to the build directory.  This gets rid of these warnings when
building out of tree:

  cp: cannot stat '/home/simark/src/babeltrace/tests/lib/test_seek_big_trace': No such file or directory
  cp: cannot stat '/home/simark/src/babeltrace/tests/lib/test_seek_empty_packet': No such file or directory

Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoconfigure: introduce new macro AX_LIB_ELFUTILS
Jérémie Galarneau [Thu, 28 Apr 2016 22:07:48 +0000 (18:07 -0400)] 
configure: introduce new macro AX_LIB_ELFUTILS

elfutils has only just started providing pkg-config metadata
which makes the current version check unreliable. This introduces
a new M4 macro which checks elfutils' version using the
_ELFUTILS_PREREQ macro (defined in elfutils/version.h).

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDocs: fix typos in babeltrace-log(1) manpage
Antoine Busque [Wed, 27 Apr 2016 21:14:14 +0000 (17:14 -0400)] 
Docs: fix typos in babeltrace-log(1) manpage

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDocs: update debuginfo doc
Antoine Busque [Wed, 27 Apr 2016 20:58:30 +0000 (16:58 -0400)] 
Docs: update debuginfo doc

Update the output format in the examples and document the new
--debug-info-target-prefix and --debug-info-full-path command line
options.

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoAdd configure report
Michael Jeanson [Sat, 23 Apr 2016 19:43:15 +0000 (15:43 -0400)] 
Add configure report

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoconfigure: check for elfutils (libelf and libdw) >= 0.154
Jérémie Galarneau [Thu, 28 Apr 2016 18:57:08 +0000 (14:57 -0400)] 
configure: check for elfutils (libelf and libdw) >= 0.154

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoSet the minimal version of elfutils to 0.154
Jérémie Galarneau [Thu, 28 Apr 2016 16:09:58 +0000 (12:09 -0400)] 
Set the minimal version of elfutils to 0.154

elfutils 0.154 is required since it is the first release to
include commit 5479725 (dwarf_highpc: Handle DW_AT_high_pc being
a constant offset from DW_AT_low_pc).

This is fix is required to read DwARF information produced by
"modern" (post-2012) GCCs which make use of this DWARF4
capability when generating position independant code. The binaries
provided as part of the test suite make use of this feature. Hence,
tests will fail with older elfutils versions.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoDoc: Add elfutils to README
Michael Jeanson [Sat, 23 Apr 2016 18:55:58 +0000 (14:55 -0400)] 
Doc: Add elfutils to README

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoFix: return -1 on bin_info_lookup_dwarf_function_name failure
Jérémie Galarneau [Wed, 27 Apr 2016 19:21:00 +0000 (15:21 -0400)] 
Fix: return -1 on bin_info_lookup_dwarf_function_name failure

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoHarmonize spelling of debug-info
Jérémie Galarneau [Wed, 27 Apr 2016 19:01:15 +0000 (15:01 -0400)] 
Harmonize spelling of debug-info

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
6 years agoIndicate default debug-info build settings in configure help
Jérémie Galarneau [Wed, 27 Apr 2016 16:01:59 +0000 (12:01 -0400)] 
Indicate default debug-info build settings in configure help

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
This page took 0.071053 seconds and 4 git commands to generate.