Commit Graph

4331 Commits

Author SHA1 Message Date
63c2bce83f data: Replace X-GNOME-Utilities category with generic Utility
The X-GNOME-Utilities category is being removed from gnome-shell and a curated app list should be used instead
2024-11-29 22:36:08 +00:00
0e1effcdcc libsysprof: ignore cancellable during IO parsing 2024-11-26 22:08:55 -08:00
6f5d119539 libsysprof: guard message string and dup contents 2024-11-26 21:46:54 -08:00
252d627888 sysprof: ensure layout_y is always initialized 2024-11-26 19:26:31 +00:00
67c1d858dc sysprof: add unload hooks for callgraph view
We want to ensure that the sorters can clear their private state before
the callgraph itself is released.

Related: #131
2024-11-26 09:23:31 -08:00
673ab1b944 sysprof: ensure we add range to the bitset
We need to still call add, but we only want to do it when the added values
are necessary. Otherwise we can get UB.
2024-11-25 17:12:08 -08:00
2ea689c299 sysprof/series: guard against invalid item 2024-11-25 16:43:33 -08:00
a8aeac135d sysprof/normalized-series: fix bitset miss-use 2024-11-25 16:43:18 -08:00
112343aef3 sysprof: some resiliency checks 2024-11-25 16:42:49 -08:00
087ce547f2 contrib/bitset: avoid UB on when copying a bitset 2024-11-25 16:26:35 -08:00
4bd113402b libsysprof: avoid UB on bsearch 2024-11-25 16:24:39 -08:00
45b3f99e55 libsysprof-capture: unsigned cast before shift 2024-11-25 16:24:28 -08:00
c6cb5473ae libsysprof: add serialize symbols helper 2024-11-25 14:15:58 -08:00
105dc0d0be libsysprof: add loading helper 2024-11-25 14:15:47 -08:00
3424ab2dc3 Update Hebrew translation 2024-11-25 09:00:09 +00:00
be1eea492b Merge branch 'gbsneto/collector-pid-id' into 'master'
libsysprof-capture: Set initial counter id to pid

See merge request GNOME/sysprof!111
2024-11-15 09:36:52 +00:00
10c38a5799 Merge branch 'gbsneto/counters-ui-improvements' into 'master'
Small improvements to the Graphics view

See merge request GNOME/sysprof!112
2024-11-14 18:50:58 +00:00
3a654ed959 recording: track DEBUGINFOD_URLS environment variable
This is handy to know in case we want to use it to find symbols after
the fact with a capture.
2024-11-14 10:49:27 -08:00
02377939f0 Merge branch 'gbsneto/mark-tooltips-duration' into 'master'
Show mark duration in tooltip

See merge request GNOME/sysprof!113
2024-11-14 18:37:07 +00:00
33b010f92b libsysprof: Show mark duration in tooltip
This helps (a lot!) with the Waterfall view. In fact, I cannot think
of a situation where knowing the duration (in addition to the start
and end times) won't help.
2024-11-14 13:52:29 +01:00
75cf8450b3 sysprof: Use sysprof_document_mark_get_end_time
It does exactly what this line of code does already.
2024-11-14 13:51:13 +01:00
7d8bc661c1 graphics-section: Increase graph height
As per feedback from WebKit developers. This helps visualizing these
graphs slightly.
2024-11-14 13:03:14 +01:00
a7dc2b5061 chart: Don't clip
It doesn't seem necessary, and gets rid of the line cutoff in some
graphs.
2024-11-14 12:57:28 +01:00
d305812932 libsysprof-capture: Set initial counter id to pid
This avoids collisions when using Sysprof collector in multiprocess
apps that share the same controlfd, such as WebKit.
2024-11-14 10:03:46 +01:00
f41263c23a build: lower libpanel requirement to ease some build systems 2024-11-13 15:54:12 -08:00
ddf13ca3d8 sysprofd: remove unused code 2024-11-13 15:53:12 -08:00
5b1f676853 sysprof-live-unwinder: error out on capture failure 2024-11-13 15:51:50 -08:00
083b2edbc0 libsysprof: provide unwind pipe from client
We don't need a socketpair for this. Additionally, things seem to work
better from the service when the client provides the pipe. Otherwise, when
running as a dbus service I often have issues with things getting closed
out from under us.
2024-11-13 15:51:42 -08:00
8995c65444 sysprof-user-sampler: implement await for FDs
This allows us to not need libdex 0.9+ for use by the sampler.
2024-11-13 15:51:34 -08:00
9c7ede8ad8 unwinder: wait for completion of subprocess 2024-11-13 15:46:01 -08:00
a07e7297d6 sysprof-live-unwinder: handle large stack unwind sizes 2024-11-13 15:29:15 -08:00
fc2d06d64b sysprof-live-unwinder: fix source func prototype
While this looks like a GSource, the implementation type requires that
it actually be a GUnixFDSourceFunc.
2024-11-12 14:45:57 -08:00
ea340e3c61 libsysprof: check for PERF_REG_EXTENDED_MASK availability 2024-11-08 11:43:32 -08:00
fcbe2b29c1 Update Slovenian translation 2024-11-07 07:51:20 +00:00
b41cb5785e Update Slovenian translation 2024-11-05 14:01:09 +00:00
e7939da3a2 sysprof: only show user stack sampling on x86
That is the only place it works currently (and is necessary).
2024-11-04 14:25:07 -08:00
2e3d2fb743 sysprof-live-unwinder: ifdef unused code off x86
Fixes a compiler warning about unused functions.
2024-11-04 14:24:36 -08:00
9800dd68b9 Merge branch 'wip/chergert/translate' into 'master'
Add support for unwinding without frame-pointers

See merge request GNOME/sysprof!110
2024-11-03 22:41:43 +00:00
f2b2dcf29d sysprof: add UI for live unwinding
This adds UI to specify the amount of stack contents to copy along with
the CPU registers so that you may unwind in user-space.
2024-11-03 10:59:05 -08:00
c3cb2f71bc sysprof-cli: add support for live unwinding
This allows you to specify --stack-size=(multiple_of_page_size) to unwind
from captured stack contents. It will use the new SysprofUserSampler to
unwind stack traces via sysprof-live-unwinder.
2024-11-03 10:59:05 -08:00
6e3e1637be libsysprof: add SysprofUserSampler for live unwinding
This instrument triggers the live unwinder in sysprofd to capture a
pre-configured amount of stack contents and CPU registers. You can use
this instead of SysprofSampler in cases where you do not have frame-
pointers but want a useful trace.

It does have a moderate amount of CPU overhead compared to just relying
on frame-pointers so keep that in mind. Generally useful on platforms
that do not have frame pointers such as CentOS.
2024-11-03 10:59:05 -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
39b96f47f5 libsysprof: add support for stack/regs options in attr
This requires a coordinating sysprofd that knows how to handle reading the
new attributes. Setting these fields will allow snapshotting the contents
of the stack and registers to do offline unwinding.

Also make the conversion to GVariant available outside the module so that
we can consume it for live unwinding.
2024-11-03 10:59:00 -08:00
fde9f5868c libsysprof: add muxer GSource
This allows copying events from a capture stream transparently into the
destination. No processing of the stream is performed, but that may change
in the future to accomidate JIT/Counter translations.

Internal only as support for upcoming live unwinding via external process.
2024-11-03 10:37:20 -08:00
a6b90e5a40 Update Dutch translation
(cherry picked from commit 047295e41c48c68336cfde81927c11abc42f6695)
2024-10-28 15:47:47 +00:00
d435c42666 libsysprof: actually unmap our event stream 2024-10-24 18:01:43 -07:00
571eb5f85b sysprof/logs: ignore -1 for cpu/pid in cells
They just mean empty, so show it as such in the cells.
2024-10-24 12:55:24 -07:00
c9a1b322cd libsysprof/sampler: track lost records as a counter/log
This makes it much easier to see what happened from the capture file which
may originate from a user different than the person inspecting it.
2024-10-24 12:49:48 -07:00
2838024227 libsysprof: add union for perf "lost" records 2024-10-24 12:42:55 -07:00
ef32a3c921 sysprof-diff: load document asynchronously 2024-10-23 11:56:30 -07:00