Commit Graph

1008 Commits

Author SHA1 Message Date
7522886d3f Emit rank information after ovni_thread_init 2024-09-13 08:58:33 +02:00
16dbc8bf5d Store rank information in the libovni thread
Prevents threads from finishing while another thread is being
initializing the rank information, causing a race to read the rank and
nranks.
2024-09-13 08:52:10 +02:00
f6fc166a38 Use atomics to protect libovni process state
Multiple threads may attempt to initialize or finalize the process, so
we keep the state stored in an atomic integer to protect against bad
usage.
2024-09-13 08:35:33 +02:00
ceaac3bcf0 Make calling ovni_thread_require() optional
When only emitting ovni events, there is no need to explicitly require
the ovni model, as libovni will already pre-populate it for the user.
2024-09-12 16:27:50 +02:00
d83e8f2d68 Always require the current ovni model 2024-09-12 16:24:01 +02:00
f6d85e9af5 Make ovni.require a mandatory attribute
We no longer accept streams that don't have the ovni.require attribute.
2024-09-12 15:56:24 +02:00
1f30e8ef8b Parse metadata from proc and loom directly
All the metadata keys are known to proc and loom only, making it
self-contained. The metadata.c module is no longer needed.
2024-09-12 15:54:29 +02:00
24805f607b Add merge-cpus-loom test
Ensure we can merge the information of CPUs from multiple threads.
2024-09-12 09:09:09 +02:00
94ede68bab Fix spawn-task-external test
It is mandatory to call ovni_thread_free().
2024-09-10 12:49:09 +02:00
8d59161a62 Update tmpdir-metadata test 2024-09-10 12:43:10 +02:00
4e3406d5f8 Move thread streams in ovni_thread_free()
The process metadata in metadata.json is no longer needed.
2024-09-10 12:42:25 +02:00
2bf739efed Reject incomplete thread streams 2024-09-10 11:57:45 +02:00
6a595fff0b Ensure the thread is ready before adding cpus 2024-09-10 11:45:24 +02:00
6a54f19b76 Fix unit tests 2024-09-10 11:21:44 +02:00
3f6ec86890 Store .obs and .json paths in stream struct 2024-09-10 11:20:39 +02:00
8e9cc34e5e Store loom CPUs in thread metadata 2024-09-10 11:00:07 +02:00
1b95fa813b Store process information in thread metadata 2024-09-10 10:30:03 +02:00
aafaf6e954 Load thread tid from metadata 2024-09-10 09:59:22 +02:00
4ec966cb67 Store loom name in metadata instead of path 2024-09-10 09:59:22 +02:00
3751f3ac64 Store ovni.part in stream metadata
Allows multiple types of streams for different system parts: thread,
process, cpu, node...
2024-09-10 09:59:22 +02:00
f31e73003f Store stream metadata in stream.json
Place all stream files in its own stream directory.
2024-09-10 09:59:22 +02:00
add2c5638a Add more path utility functions 2024-09-10 09:59:22 +02:00
eceec52194 Store TID and PID in thread metadata 2024-09-10 09:59:22 +02:00
492d6fa290 Increase version metadata to 3 2024-09-10 09:59:22 +02:00
36cf3121d1 Fix implicit signed conversions
Some checks failed
CI / build:rt (push) Failing after 12s
CI / build:asan (push) Failing after 12s
CI / build:nompi (push) Successful in 59s
CI / build:debug (push) Successful in 1m50s
CI / build:local (push) Successful in 2m2s
CI / build:compilers (push) Successful in 2m27s
2024-09-09 13:44:05 +02:00
c8b95313ff Fix unaligned access to 64 bits payload 2024-09-09 13:44:05 +02:00
e5448af6d8 Rebuild ring buffer pointers after injecting events
The ring buffer pointers are no longer valid as we may have displaced
events around. The pointers of the affected region are reconstructed by
reading the events again, following their size.
2024-09-09 13:43:59 +02:00
49149e452c Check ring buffer order after injecting events
Ensure that we are not reading garbage.
2024-09-09 09:10:04 +02:00
b2d91391b3 Add sort-into-previous-region emu test 2024-09-09 09:10:04 +02:00
13f70be87b Set nOS-V version required for tests to 2.3.1
Includes the required fixes for the kernel ring buffer tests.
2024-09-09 08:51:04 +02:00
71aa33d22f Use string to set ovni.kernel_ringsize 2024-09-09 08:51:04 +02:00
4c3da12ea1 Fix typos in nOS-V kernel test 2024-09-09 08:51:04 +02:00
a47082730a Ensure that nOS-V aborts on ring overflow 2024-09-09 08:51:04 +02:00
99dc3904af Add overflow and normal kernel nOS-V tests 2024-09-09 08:51:04 +02:00
acf18c1bb4 Make nOS-V kernel overflow test configurable 2024-09-09 08:51:04 +02:00
e9788e22ad Add test kernel ring overflow test for nOS-V
There is a problem in the way we are reading the buffer in nOS-V, which
fails when the ring buffer gets full. This regression test ensures it is
fixed.

Reported-by: David Álvarez <david.alvarez@bsc.es>
2024-09-09 08:51:04 +02:00
6cb983a7c4 Update nOS-V commit 2024-09-09 08:51:04 +02:00
7496a6a866 Fix easy cases of unneeded casts 2024-09-09 08:28:08 +02:00
c8750b9dfd Enable -Wconversion and -Wsign-conversion
Prevents implicit conversions to go undetected, as they will have to be
explicit now.
2024-09-09 08:28:02 +02:00
d98ca97624 Fix unaligned load of 4 bytes for typeid
Use memcpy() to move the typeid to an aligned address.
2024-07-29 13:17:37 +02:00
61d57901b1 Enable undefined behavior sanitizer in CI 2024-07-29 13:09:41 +02:00
9c82038561 Add release link to tag 1.10.0 2024-07-26 16:20:34 +02:00
15dfa48d2d Release version 1.10.0 2024-07-26 13:25:43 +02:00
2457e50712 Use always base 10 integer formats with scanf()
The %i printf variant tries to autodetect the base, so 010 becomes 8.
2024-07-24 16:36:54 +02:00
92c36502bc Reduce heat and fibonnacci test sizes 2024-07-24 16:09:47 +02:00
439b716a71 Use int64_t printf formats for mark channels 2024-07-24 16:09:47 +02:00
97282ff051 Increase test timeout to 60 seconds 2024-07-24 16:09:47 +02:00
093c91521a Fix error format strings in mark API 2024-07-24 16:09:44 +02:00
74aa7b4ea6 Update changelog 2024-07-24 15:12:09 +02:00
3d8c84e17c Fix heap when size_t is not unsigned long long
When the width of size_t doesn't match the width of the unsigned long
long type, the number of leading zeros doesn't match, making the
heap_get_move() function return incorrect values. This is the case on
ARMv7 with 32 bits, where size_t is 32 bits but unsigned long long is 64
bits.

We check the size of size_t to select which builtin we need. The sizeof
operator cannot be used at preprocessing, so we rely on the
optimizations to only leave the proper assembly instruction.

Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/193
2024-07-24 15:12:09 +02:00