188 Commits

Author SHA1 Message Date
f0c2bfe96e Post-release version bump 2025-06-28 17:41:58 -07:00
7f1d30eb88 Bump version for 49 development 2025-03-20 12:53:21 -07:00
745c5c28c4 build: add check for asm/perf_regs.h
Related: #127
2025-03-17 18:28:19 -07:00
f4edefb44e Post-release version bump 2025-03-15 12:45:32 -07:00
392c6e9687 Release 48.0 2025-03-15 12:45:16 -07:00
001c7ea15a Release 48.rc
A little late but should help distributions doing integration.
2025-03-11 10:12:20 -07:00
52660e9c19 Release 48.beta 2025-02-06 22:39:29 -08:00
1bd79af439 sysprofd: add support for unwinding without frame pointers
This provides a new sysprof-live-unwinder subprocess that runs as root to
allow accessing all processes on the system via /proc/$pid/. It is spawned
by sysprofd with various perf event FDs and a FD to write captures to.

Ideally the capture_fd is something that will naturally error if the client
application crashes (such as a socketpair() having the peer close). This
is not enforced but encouraged. Additionally, an event_fd is used to allow
the client application to signal the live-unwinder to exit.

Unwinding is performed by looking at the modules loaded into the target
pid and using libdwfl to access DWARF/CFI/etc state machinery. Stack data
does not touch the disk as it exists in a mmap buffer from perf and is
then translated into a callchain and sent to the Sysprof client.

Unwinding occurs as normal post-mortem though is improved through the use
of debuginfod to locate the appropriate symbols.
2024-11-03 10:59:05 -08:00
d2471d4bf5 libsysprof: add debuginfod symbolizer
This is based on a debuginfod_client provided by Barnabás Pőcze in !73.
It extends it to use the new task infrastructure to elevate the download
process to the user while loading a capture file.
2024-10-10 17:12:30 -07:00
cc3dc46910 build: bump for development 2024-09-26 14:35:15 -07:00
e5382d1b8c build: reduce GLib requirement
This is kept lower so that you can build without GTK on older systems.

Related: 530b4a9d12 (note_2223853)
2024-09-16 09:48:27 -07:00
ae9764ccf4 Post-release version bump 2024-09-13 19:28:47 -07:00
5513868c49 Release 47.0 2024-09-13 19:28:13 -07:00
b726f49d15 Turn polkit-agent support into an optional feature.
This simplifies deployment on embedded devices, where polkit is usually
unncessary at runtime, but pulls in quite a few otherwise unncessary
dependencies. Start to improve the situation by allowing to selectively
disable polkit-agent support at compile time, which aids in container
usage scenarios, where one wants to invoke 'sysprof-cli' from within
the container. Bypassing polkit-agent in the container is then desired,
since the host sysprofd will handle asking for permissions to enable
the tracing. It allows for a simpler setup of rootless podman
containers, avoiding UID mismatches, that lead to rejection of the
tracing enablement.

- Add a new 'polkit-agent' meson build feature, that allows to force disabling
  polkit-agent support (-Dpolkit-agent=disabled).

- Mark the 'polkit-agent' feature as enabled, by default, to reflect
  the current status (sysprof-cli did not build without polkit-agent support).

- libsysprof/sysprof-instrument.c: Build fix when polkit is not available,
  remove the unnecessary 'g_autopr(PolkitDetails) details' variable.

- Alter the sysprof-cli dependencies to only attempt to link against
  polkit-agent, if necessary. Modify sysprof-cli.c to wrap all code using
  polkit-agent in HAVE_POLKIT_AGENT blocks.
2024-08-20 20:46:11 +02:00
e81cfb64dd Post-release version bump 2024-08-06 14:16:54 -07:00
7622237dc2 Post-release version bump 2024-06-28 16:07:36 -07:00
530b4a9d12 build: bump version requirements 2024-06-24 12:01:48 -07:00
097d3b512f build: bump for GNOME 47 development 2024-03-28 12:59:06 -07:00
10b9600ba2 Post-release version bump 2024-03-15 15:37:55 -07:00
594a3037c0 Release Sysprof for GNOME 46.0 2024-03-15 15:34:21 -07:00
b7c74d2a43 Release 46.rc 2024-03-03 14:36:36 -08:00
8186638f4e Release 46.beta 2024-02-17 11:24:52 -08:00
d93fec4c6c bump for 46 development 2023-10-13 12:31:53 -07:00
4b5fb5fdc9 Release Sysprof 45.0 2023-09-16 16:12:54 -07:00
e12138dc96 Release Sysprof 45.rc 2023-09-01 14:53:24 -07:00
c2a8a86b8a build: fix unwind check 2023-08-28 17:32:23 -07:00
4ad44609d0 build: remove optional support for libunwind
backtrace() was only ever used for bringup, not actually meant to be used
in any production capacity.
2023-08-11 12:22:57 -07:00
b6692e8faa build: prepare for beta 2023-08-07 15:04:48 -07:00
95a3177623 Revert "meson: remove unnecessary join_path() with get_option('prefix')"
This reverts commit 602a4d7fa7.

You absolutely must have these paths expanded when in use in system files.
2023-08-01 19:21:41 -07:00
dc2d7b983f build: make sure PACKAGE_LIBDIR is expanded
This is necessary so that we can access preloads with full paths.
2023-07-31 11:46:18 -07:00
4dca9ab23f build: ensure we can disable various build dependencies
This ensures that configuring with the following works.

meson setup minimal . \
	-Dtests=false \
	-Dsysprofd=host \
	-Dlibsysprof=false \
	-Dlibunwind=true \
	-Dgtk=false \
	-Dtools=false \
	-Dexamples=false \
	-Dhelp=false
2023-07-29 11:07:19 -07:00
31f25b155a build: fix meson project license 2023-07-28 17:42:44 -07:00
bdd6ea8165 meson: remove useless if statement
Just always pass the boolean option.
2023-07-28 14:06:22 -05:00
ba2f3b23c6 meson: use to_string() method on integer 2023-07-28 14:06:00 -05:00
602a4d7fa7 meson: remove unnecessary join_path() with get_option('prefix')
Meson will expand the paths for you.
2023-07-28 14:04:48 -05:00
f40587a38a meson: remove unnecessary argument nesting 2023-07-28 14:03:51 -05:00
b10d056635 meson: use dependency('dl')
Added in Meson 0.62.0. It aids in finding libdl on various platforms.
2023-07-28 14:00:57 -05:00
f93767cfb2 meson: use variables for gio-2.0, glib-2.0, and gio-unix-2.0 2023-07-28 14:00:04 -05:00
39fc1161f6 meson: cleanup formatting 2023-07-28 13:10:54 -05:00
70830bd019 meson: use SPDX license string 2023-07-28 13:07:47 -05:00
dbb7833cbf libsysprof: join libsysprof-analyze and libsysprof-profile
This brings together the two libraries back into one now that the whole
design is pretty well sorted out. They depend on roughly the same libraries
anyway and it's way easier of the single library can both read and write
the capture files (along with bringing in libsysprof-capture symbols in
a single place).
2023-07-19 17:40:41 -07:00
8078ecc60a build: fix some various build options 2023-07-19 12:13:27 -07:00
8dd7478e96 janitorial: move dbus service files into sysprofd
This is the only place they are really used directly, so keep them there.
2023-07-18 16:13:01 -07:00
8bb45686c6 build: bump dex requirement
We need various new API there.
2023-07-17 17:12:17 -07:00
12e75e4c8c build: remove libsysprof
This library is going away now that we have -analyze and -profile libs.
2023-07-17 11:38:25 -07:00
1f4f4d7e50 build: keep libsysprof-capture version at 4
We haven't changed the format, so we really don't want to cause unnecessary
churn by applications consuming this.
2023-07-12 11:49:55 -07:00
88d0589fea libsysprof-profile: tail journald and append logs to capture
It can be handy to get system information from journald to correlate with
what is going on in applications. This simple journald tail GSource will
dispatch to our callback which can append the logs to the capture.

This uses a custom callback rather than the GSourceFunc because that seems
a bit annoying to use with recent GCC function equivalence checks.
2023-07-12 10:31:23 -07:00
d1bcf93922 build: add libdex-1 requirement for libsysprof-profile
Being able to manage asynchronous operations with libdex will drastically
simplify how we implement the profiler and instruments. We may eventually
do the same with libsysprof-analyze to parallelize some operations.
2023-05-26 12:21:36 -07:00
24b876f437 libsysprof-profile: stub out libsysprof-profile library
This does the same thing as we did for libsysprof-analyze, but to contain
the profiler bits that will be used from applications/etc.
2023-05-25 15:43:53 -07:00
a4b5ea6160 build: various meson.build cleanup
We have a lot of twisted options, and could really use some cleanup to
make that all more manageable. I don't know anywhere we care about not
checking for a C++ compiler, so just always check for that so we can use
the demangler.
2023-05-25 15:30:42 -07:00