Commit Graph

11081 Commits

Author SHA1 Message Date
develOseven
fbf3a3d738 Add C API for Sections 2026-10-03 23:22:20 +02:00
Bartosz Taudul
f55c69603f Update NEWS. 2026-10-01 11:21:28 +02:00
Bartosz Taudul
b1fef9f334 Merge pull request #1477 from thejvfdev/feature/standardize-macro-semicolon-usage
Standardize macro semicolon usage
2026-10-01 02:11:18 +02:00
jvf.dev
3d861a4bff Wrap if-based helpers in do-while and remove trailing semicolons 2026-09-30 21:00:07 +01:00
jvf.dev
3bd767a6e9 Remove semicolons from previously missed macros 2026-09-30 20:55:00 +01:00
jvf.dev
39484791f2 Standardize macro semicolon usage
Remove semicolons from public macros
2026-09-30 02:50:54 +01:00
Bartosz Taudul
6dae06535c Nicer README. 2026-09-29 23:05:33 +02:00
Bartosz Taudul
713f1deaa0 Document file descriptor usage of Linux system tracing. 2026-09-27 22:39:19 +02:00
Bartosz Taudul
90a5072650 Merge pull request #1476 from alandtse/feat/mcp-better-error-detection
feat(mcp): surface why a live_connect stalled
2026-09-27 11:59:12 +02:00
Alan Tse
45d6ac9e60 feat(mcp): surface why a live_connect stalled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MbSf1XDruoDorpHFzEjqKX
2026-09-27 02:07:17 -07:00
Bartosz Taudul
a8db9bd844 Bump nfd-extended to 1.4.0. 2026-09-26 18:49:20 +02:00
Bartosz Taudul
0913edf7be Update NEWS. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
9c43ad241f Document lock deadlock detection. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
7d8c7caea7 Label deadlocked threads in thread lists and trace information. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
7a8e9bb727 Mark deadlocked threads and locks on the timeline. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
7a975bea44 Show a deadlock notification with cycle details. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
ae32c0fff8 Share the lock display name resolution. 2026-09-24 22:21:53 +02:00
Bartosz Taudul
eee89de2d9 Track deadlocks in the worker from the lock event state.
The live per-frame scan visits only the set of locks with nonzero wait
counts, updated at each lock event: every wait-for edge originates at a
waiter, so uncontented locks cannot contribute anything. File loads replay
events without touching the set and are covered by the one-shot full-map
scan at end of load.
2026-09-24 22:21:52 +02:00
Bartosz Taudul
5808e7ed1a Add unit tests for lock deadlock detection. 2026-09-24 22:21:52 +02:00
Bartosz Taudul
092bfcc2a0 Add deadlock cycle detection to the lock event engine.
The scan consumes the final Waiting/SharedHolding flags of each lock
map: a thread blocked in a lock acquisition emits no Obtain and no other
event, so an unclosed wait at the last known state is a permanent wait
per the event contract. A failed try_lock never emits a wait, so it
cannot fabricate an edge. Locks recorded by clients with inverted
release ordering are skipped entirely, as their holder attribution is
ambiguous.

A thread that holds a shared lock and waits for exclusive cannot
progress while its own shared hold persists; this is reported as a
size-1 cycle.
2026-09-24 22:21:50 +02:00
Bartosz Taudul
81c5005509 Bump capstone to 6.0.0-Alpha11. 2026-09-21 21:25:24 +02:00
Bartosz Taudul
d92cc589d6 Fix TracyCSharedLockAnnounce macro name in disabled builds. 2026-09-21 18:14:12 +02:00
Bartosz Taudul
fe86d1ac8f Keep threads that participate only in locks visible in the timeline. 2026-09-21 18:14:12 +02:00
Bartosz Taudul
e88b8680d7 Report lock statistics from the engine in python bindings. 2026-09-21 18:14:12 +02:00
Bartosz Taudul
aa54183ea0 Draw lock timelines from engine segments.
The differences against the previous renderer are deliberate: the
drawn state is canonical from event 0, HasBlockingLock clears when the
blockers drain, same-state neighbors merge, a waiting thread shows as
holding only on its true acquire, a shared holder waiting for exclusive
draws as blocking, the Blocked and Sharing lists contain only genuinely
blocked roles, and the tooltip holder count follows the cursor position
in the holder-change log.
2026-09-21 18:14:11 +02:00
Bartosz Taudul
b81fe9db72 Rewrite server-side lock tracking as an append-only event engine.
Capture has serialized lock events since d6f32a083 and 3e3aa80fa, so
the out-of-order reconstruction machinery has nothing left to repair.
Mark now targets the recorded Wait/Obtain event index; the old reverse
scan could walk off the start of the timeline for a thread that never
waited.
2026-09-21 18:14:11 +02:00
Bartosz Taudul
13b8e6e15c Fail the capture when a lock exceeds its 64-thread slot table.
InsertLockEvent wraps the uint8 slot index past the 64-entry
per-lock table, misattributing the 65th distinct thread to slot
0. Set the failure instead.
2026-09-21 18:14:11 +02:00
Bartosz Taudul
b14dad2c42 Lock release event must happen before the actual release.
With unlock -> notify order the thread can be preempted by other thread,
for example one that wants to lock the very same lock. This would produce
incorrect ordering of lock release and acquire events.
2026-09-21 18:14:11 +02:00
Bartosz Taudul
3ed0a42214 Store lock events with a 16-bit thread slot. 2026-09-21 18:14:09 +02:00
Bartosz Taudul
dd29819f3d Merge pull request #1472 from alandtse/fix/emscripten-deploy-fork-guard
ci(emscripten): skip SFTP deploy on forks
2026-09-15 13:04:37 +02:00
Alan Tse
2ba0e21c97 ci(emscripten): skip SFTP deploy on forks
The deploy job SFTPs the emscripten build using repo secrets
(SERVER/USERNAME/PRIVATE_KEY/REMOTE_PATH) that only exist upstream.
On a fork these are empty, so every push to a fork's master fails
with "remote_path is empty" even though the actual build succeeded.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVBiYgtsB6okBueTwp5swa
2026-09-15 02:38:43 -07:00
Bartosz Taudul
a6d16f5515 Move LockHighlight to the timeline draw header. 2026-09-14 21:02:00 +02:00
Bartosz Taudul
e58f4819ba Merge pull request #1470 from wolfpld/slomp/webgpu-capacity
Increased the max query limit of TracyWebGPU.hpp
2026-09-14 19:33:05 +02:00
Marcos Slomp
841fae2371 code review: formating consistency 2026-09-14 10:16:24 -07:00
Marcos Slomp
016ae062e9 addressing review comments 2026-09-14 08:48:23 -07:00
Marcos Slomp
8cbf2b14a2 use FastVector for the shadow buffer 2026-09-14 08:48:23 -07:00
Marcos Slomp
6be14cff4e increasing the total query limit to 64K queries 2026-09-14 08:48:23 -07:00
Marcos Slomp
a11c8ab40c refactoring (isolating) Tracy protocol bits 2026-09-14 08:48:23 -07:00
Bartosz Taudul
c71e059d90 Bump exmples/dyna CPM to 0.43.1. 2026-09-13 20:30:40 +02:00
Bartosz Taudul
3247f490f7 Update NEWS. 2026-09-13 16:53:42 +02:00
Bartosz Taudul
edc649cdec Bind Ctrl+plus / Ctrl+minus / Ctrl+0 to the user interface scale. 2026-09-13 16:53:42 +02:00
Bartosz Taudul
1381f40bd9 Represent the user interface scale as a preset table index.
Replace the userScale float with a zoomLevel index into s_zoomPresets;
the ini key changes accordingly and previously saved floats are ignored.
2026-09-13 16:21:05 +02:00
Bartosz Taudul
ee067d112b Update NEWS. 2026-09-12 22:31:34 +02:00
Bartosz Taudul
0c35226446 Add warning about large traces. 2026-09-12 22:25:01 +02:00
Bartosz Taudul
63ffadc852 Load the startup trace in a background thread.
Opening and parsing on the browser main thread froze the tab for the
whole load; the file selector path already loads in a worker thread,
so boot now uses the same thread, progress modal, and error dialogs.
2026-09-12 22:19:59 +02:00
Bartosz Taudul
af3432cfde Fetch the startup trace instead of preloading the embedded one.
The preloaded data package made every ?t= load download embed.tracy
as well. The startup glue now fetches embed.tracy only when no URL is
given, into the same /url.tracy slot, and the boot code has a single
open path.
2026-09-12 22:19:59 +02:00
Bartosz Taudul
1fb370f935 Give version and load failure exceptions meaningful messages. 2026-09-12 22:19:59 +02:00
Bartosz Taudul
27f12a4eb5 Report unloadable trace files on the command line instead of crashing.
Version and integrity checks throw from the View constructor, which
was outside the try/catch guarding the file open, so a bad argv trace
terminated the process. Catch and report it there as well.
2026-09-12 22:19:58 +02:00
Bartosz Taudul
1c50138f85 Report failed second-trace loads in compare instead of crashing.
The compare load thread caught only UnsupportedVersion, so a
corrupted or otherwise unloadable second trace escaped the thread as
std::terminate. Catch the same set as the main trace load and route
it to the existing bad-version dialog.
2026-09-12 22:19:58 +02:00
Bartosz Taudul
2191885f86 Show a generic message for unreadable or corrupted trace files.
FileReadError now also signals truncated or malformed traces, not just
mapping failures, so the mmap-specific text misled users.
2026-09-12 22:19:58 +02:00