Commit Graph

1819 Commits

Author SHA1 Message Date
33c81a3a9c memprof: add memory profiling using LD_PRELOAD
This brings over some of the techniques from the old memprof design.
Sysprof and memprof shared a lot of code, so it is pretty natural to
bring back the same callgraph view based on memory allocations.

This reuses the StackStash just like it did in memprof. While it
would be nice to reuse some existing tools out there, the fit of
memprof with sysprof is so naturally aligned, it's not really a
big deal to bring back the LD_PRELOAD. The value really comes
from seeing all this stuff together instead of multiple apps.

There are plenty of things we can implement on top of this that
we are not doing yet such as temporary allocations, cross-thread
frees, graphing the heap, and graphing differences between the
heap at to points in time. I'd like all of these things, given
enough time to make them useful.

This is still a bit slow though due to the global lock we take
to access the writer. To improve the speed here we need to get
rid of that lock and head towards a design that allows a thread
to request a new writer from Sysprof and save it in TLS (to be
destroyed when the thread exits).
2020-02-07 19:00:33 -08:00
cae70498da callgraph: fix whitespace 2020-02-07 16:54:43 -08:00
9689b8c9c6 selection: whitespace cleanup 2020-02-07 16:54:23 -08:00
31d83a12b9 elf: short-circuit symbol resolving 2020-02-07 16:54:18 -08:00
4c5fec742f jitmap: whitespace cleanup 2020-02-07 16:54:12 -08:00
21fc5609f2 build: ignore post-install unless gtk app is installed 2020-02-07 11:04:03 -08:00
2e72e6af84 capture: fix format type for address on macOS 2020-02-07 11:00:09 -08:00
ac3cf31d06 Updated Danish translation 2020-02-07 03:24:40 +01:00
be2949b72e Update Indonesian translation 2020-02-05 11:37:35 +00:00
0cdea2d776 Update Polish translation 2020-02-02 12:52:43 +01:00
47c09cb241 build: add version macros for 3.36 2020-01-31 09:13:50 -08:00
aee8bb12c8 build: add -Wl,-z,relro -Wl,-z,defs and -Wl,-z,now link flags 2020-01-31 09:13:01 -08:00
96000a4115 Updated Spanish translation 2020-01-30 15:02:08 +01:00
f5ddeb176d Update Slovak translation 2020-01-30 08:02:33 +00:00
981873af75 cli: add --merge command line option
This allows the caller to merge multiple syscap files into one such as:

  sysprof-cli --merge a.syscap b.syscap > c.syscap

Fixes #26
2020-01-29 08:17:36 -08:00
fbacb39af8 Update Polish translation 2020-01-26 14:46:46 +01:00
0b4defe135 binfile: fix path check 2020-01-24 12:54:51 -08:00
9a3a95a5ca podman: add debug directories from podman containers
This is meant to allow us to find the debug files for a given library for
podman containers running as the current user. However, we still need to
try to translate the fuse-overlayfs paths when parsing the /proc/pid/mounts
or we'll have incorrect paths coming from the event stream.
2020-01-24 10:54:32 -08:00
d176efe91c lookaside: cleanup whitespace 2020-01-24 10:51:36 -08:00
bae10987f0 libsysprof-ui: fix timing information for marks tooltips 2020-01-24 09:29:34 -08:00
e90efc8a20 Updated Spanish translation 2020-01-24 12:50:26 +01:00
94b0ecb758 display: provide recording time for display titles 2020-01-23 12:46:44 -08:00
460df56fa5 visualizers: clear selected row when showing details
The details don't correspond to any selected row, so clear the row when
we switch to the details page.
2020-01-23 12:36:04 -08:00
bcfaa6caa8 perf: use task-ids instead of pids
The pids might overlap, which isn't that useful for us when we are creating
threads. Instead use the task-ids (which should basically overlap anyway).
2020-01-23 12:26:18 -08:00
731b6dd379 sysprof: allow passing program path to sysprof
If the path provided to us is an executable program (instead of a syscap
file) then we can setup the path as the binary to execute in the profiler
assistant and save the user a couple clicks.
2020-01-23 11:59:50 -08:00
599ecaebe1 display: remove unused variable 2020-01-23 11:59:50 -08:00
ddd6a66f35 Updated Spanish translation 2020-01-23 12:55:34 +01:00
7dad1f2ab4 marks: add end time to mark details 2020-01-22 12:01:26 -08:00
812b0d60a0 counters: use counter description in menu item 2020-01-21 21:06:41 -08:00
b29ee9e2cc flatpak: update org.gnome.Sysprof3.json
This gets things building again on updated SDK/Platform.
2020-01-21 11:27:43 -08:00
61da1bbd9e Update Indonesian translation 2020-01-14 12:58:10 +00:00
33619b4240 Update Indonesian translation
(cherry picked from commit 558b264ade297421cb1f1f9ac4e59d0f7b714977)
2020-01-13 08:08:50 +00:00
db160cf536 ui: avoid concurrent reloads of stack depths
This ensures that we only have one thread doing reloads of stack frame
depths at a time. While we only ref the reader in the state, it should
still be fine because cursors *always* make a copy of the reader for their
internal use. I don't think this should fix #23, but it may reduce the
chances of it happening.

It's unclear to me what could cause #23 to happen, unless for some reason
multiple threads were sharing the reader's internal buffer causing the
frame-> dereferences to be junk. But as stated with reader copies, that
should not be able to happen.

Another possible avenue is that the task is cancelled and for some reason
the task is clearing the task data while the thread is running. Again,
that is not supposed to be possible given the design of GTask as it
should not release task data until finalized.
2020-01-08 11:13:24 -08:00
bd2da8baa0 ui: use g_atomic_rc_box
This changes a couple of our structures to use the atomic rc box instead
of gslice directly. It shouldn't affect anything, just some general
modernization while looking at #23
2020-01-08 11:00:54 -08:00
e727ad5333 release 3.35.3 2020-01-02 12:15:11 -08:00
c4eaa53f20 libsysprof: handle bus/proxy failure gracefully 2020-01-02 10:31:12 -08:00
a72b0c1660 Merge branch 'fix-tests' into 'master'
Fix tests

Closes #7 and #21

See merge request GNOME/sysprof!21
2020-01-02 18:12:06 +00:00
8a86d5f1a0 test: Fix detection of pagesize at runtime
Not all architectures have a page size of 4k, detect it at runtime

Fix: https://gitlab.gnome.org/GNOME/sysprof/issues/21
2020-01-02 12:44:27 +01:00
994b0535ef Fix endianness detection when writing a frame
Properly detect endianness at compilation time

This fixes the tests on big-endian machines

Fix: https://gitlab.gnome.org/GNOME/sysprof/issues/7
2020-01-02 12:44:15 +01:00
0787b8fa64 Merge branch 'gbsneto/fix-rpi4-crash' into 'master'
details-page: Protect against NULL line

See merge request GNOME/sysprof!20
2019-12-30 18:15:42 +00:00
a67701848d details-page: Protect against NULL line
On a Raspberry PI 4, Sysprof crashes immediately when
trying to memchr() on the 'line' variable. The current
RPI4 support is poor on Linux mainline admitedly, but
having Sysprof to work on it at least gives us a chance
to profile the major bottlenecks.

Protect against NULL 'line'.
2019-12-30 14:03:15 -03:00
5388267e04 Update Polish translation 2019-12-25 16:39:23 +01:00
cd1bd816f6 Update Swedish translation 2019-12-16 11:05:27 +00:00
fd898d0fb2 Update Brazilian Portuguese translation 2019-12-14 11:56:50 +00:00
65aff45d5c Updated Spanish translation 2019-12-13 12:25:28 +01:00
b56cd73308 fix typo
Fixes #20
2019-12-12 12:39:28 -08:00
c1f5306a84 Update Swedish translation
(cherry picked from commit d21a895f375decff7e8ad447cf6d03800f803451)
2019-12-12 13:58:29 +00:00
c074971173 Release 3.35.2 2019-12-11 10:50:23 -08:00
489b70aa27 Add Greek translation
(cherry picked from commit f5effc758de0d164984f9049050bc5d7dc1fac65)
2019-12-08 20:22:50 +00:00
7f1f86f82c Merge branch 'datadir-in-pc' into 'master'
build: add datadir to pkgconfig files

See merge request GNOME/sysprof!19
2019-12-04 23:09:55 +00:00