Commit Graph

470 Commits

Author SHA1 Message Date
Bartosz Taudul
4509412efb Fast callstack retrieval for linux. 2019-03-05 18:56:39 +01:00
Bartosz Taudul
1bbf296351 Use fast callstack frame decoding to cut callstack. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
cb62b63fe2 Fast callstack frame decoder.
Returns only function name, doesn't retrieve inlined functions, doesn't
perform demangling.
2019-03-05 02:42:51 +01:00
Bartosz Taudul
b11f932078 Cut lua callstack at lua_pcall. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
ec73178733 Move callstack cutting to a separate function. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
d229c1bc1b Send native callstack along with allocated callstack. 2019-03-05 02:42:50 +01:00
Bartosz Taudul
bef31ba073 Separate message for zone begin with alloc src loc and callstack. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
e3c31e4a4e Send callstack alloc payload. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
d863245b49 Serialize discontinuous frame messages. 2019-02-28 19:21:23 +01:00
Bartosz Taudul
b89db6e926 Don't send CPU usage data when there's no readings. 2019-02-25 15:11:35 +01:00
Bartosz Taudul
963d2b3ca8 CPU usage getter for apple. 2019-02-25 15:04:06 +01:00
Bartosz Taudul
85f29a0f22 Collect system time before server connection is made. 2019-02-24 19:12:17 +01:00
Bartosz Taudul
bafc8a1330 Implement getting CPU usage in linux. 2019-02-24 19:02:49 +01:00
Bartosz Taudul
0b9fa8f3c8 Track CPU usage also on cygwin. 2019-02-21 23:11:09 +01:00
Bartosz Taudul
9f4f5bcb63 CPU usage retrieval. 2019-02-21 22:45:53 +01:00
Bartosz Taudul
938d8ce69e Properly initialize demangled pointer. 2019-02-21 15:04:17 +01:00
Bartosz Taudul
44009b6fda Use mach_absolute_time() to get time on iOS. 2019-02-21 14:45:13 +01:00
Bartosz Taudul
e839a3153f Just use getprogname(). 2019-02-21 11:40:56 +01:00
Bartosz Taudul
c4d46f1c24 No libproc.h on iOS. 2019-02-21 11:33:45 +01:00
Till Rathmann
9d7c4a2861 Merged in tillrathmann/tracy (pull request #33)
Fixed DLL support
2019-02-20 17:24:12 +00:00
Till Rathmann
29140afe0c Fixed compiler warnings. 2019-02-20 17:50:49 +01:00
Till Rathmann
77abc3bffd Fixed DLL support. 2019-02-20 16:15:13 +01:00
Bartosz Taudul
22329ae5d9 Collect call stacks on apple. 2019-02-20 16:01:41 +01:00
Bartosz Taudul
34d24b16bb Retrieve memory size on apple. 2019-02-20 13:52:55 +01:00
Bartosz Taudul
9c966b6224 Process name retrieval on apple. 2019-02-20 13:13:29 +01:00
Bartosz Taudul
8f75839d66 Fix apple target detection. 2019-02-20 12:43:48 +01:00
Bartosz Taudul
5afadcb11d Fix if condition. 2019-02-19 21:51:41 +01:00
Bartosz Taudul
ef5e30056e Implement delayed initialization of the profiler.
Enabled on osx, ios.
2019-02-19 20:43:30 +01:00
Bartosz Taudul
3f914834b7 Hide rest of statics. 2019-02-19 19:33:37 +01:00
Bartosz Taudul
9fabafbeca Fix DLL code. 2019-02-19 18:46:59 +01:00
Bartosz Taudul
2421e05c27 Prevent direct access to s_profiler. 2019-02-19 18:38:08 +01:00
Bartosz Taudul
d865d1cc87 Disallow direct access to s_token. 2019-02-19 18:27:00 +01:00
Bartosz Taudul
44753dd4ac thread_local implies static. 2019-02-19 16:52:05 +01:00
Bartosz Taudul
c7e64bb8a8 Replace select() with poll(). 2019-02-10 15:45:23 +01:00
Bartosz Taudul
9dd869a5eb Fix call stacks on cygwin. 2019-02-02 13:58:17 +01:00
Bartosz Taudul
653caf159f Assign return value only once. 2019-01-29 22:21:01 +01:00
Bartosz Taudul
a708bebbfd Use language neutral header for callstack capability detection.
This fixes call stack collection in C API when TRACY_CALLSTACK is
defined.
2019-01-27 13:41:32 +01:00
Bartosz Taudul
01bddf95a6 Trace inline function calls on MSVC call stacks. 2019-01-26 23:50:58 +01:00
Bartosz Taudul
49b0a3500d Enable tracing incline functions in callstacks. 2019-01-20 19:33:37 +01:00
Bartosz Taudul
ddad475c19 Make it possible to store multiple frames at single frame address. 2019-01-20 19:11:48 +01:00
Bartosz Taudul
bf7cc0a0d5 Add missing header for PRIxMAX. 2019-01-20 17:17:09 +01:00
Bartosz Taudul
9e7714c45a Decode callstack frames using libbacktrace. 2019-01-20 16:55:59 +01:00
Rokas Kupstys
36c76456f7 Fix mistakes from MingW support commit. 2019-01-19 15:03:43 +02:00
Rokas Kupstys
8157e3a0b3 Fix builds with MingW. 2019-01-19 13:53:10 +02:00
Bartosz Taudul
92f3a4bba0 Add ZoneText and ZoneName to the C API. 2019-01-16 02:10:21 +01:00
Bartosz Taudul
b72d30af80 Allow disabling zone verification. 2019-01-15 18:59:05 +01:00
Bartosz Taudul
8e52ab318b Send zone validation messages.
This is only performed for C API, as C++ scoped zones are always
properly ordered, due to RAII. With manual submission of zone begin and
end events there's no such guarantee.
2019-01-14 22:36:54 +01:00
Bartosz Taudul
970108fbbf Track zone id for verification purposes. 2019-01-14 22:36:54 +01:00
Bartosz Taudul
1a8518dcc2 Allow filtering zones in on-demand mode. 2019-01-14 22:36:54 +01:00
Bartosz Taudul
1f0d1fdfdc C API prototype. 2019-01-14 21:07:29 +01:00
Bartosz Taudul
070888f80d Make it possible to have multiple vulkan contexts.
API change!
2019-01-10 17:11:17 +01:00
Bartosz Taudul
b1ba2f9bf7 Fix extern "C" initialization. 2018-12-29 01:00:14 +01:00
Bartosz Taudul
1733961885 Proper printf type for DWORDLONG on cygwin. 2018-12-29 01:00:14 +01:00
Bartosz Taudul
ee718f18d9 Cygwin headers provide their own FORCEINLINE macro. 2018-12-29 01:00:14 +01:00
Bartosz Taudul
0a6c6606bf Don't use MSVC pragmas on gcc/clang (cygwin). 2018-12-29 01:00:14 +01:00
Miguel Fernandez
baa870fa8c Moved NoMinMax before windows.h 2018-12-24 18:50:52 +00:00
Miguel Fernandez
7c164375a4 Moved NoMinMax inside _MSC_VER 2018-12-24 18:49:53 +00:00
Miguel Fernandez
51bdb004f9 Avoid conflicts with min/max macros 2018-12-24 15:26:50 +00:00
Bartosz Taudul
e9ce8fdfda Flush queues when opening listen socket fails. 2018-12-21 18:14:30 +01:00
Bartosz Taudul
a4be9b51b0 Use common queue clearing function. 2018-12-21 18:12:26 +01:00
Bartosz Taudul
331693d7f1 Use proper pattern for acquiring serial lock.
This fixes a potential hang during crash handling. Also, lock duration
is reduced.
2018-12-21 18:11:09 +01:00
Rokas Kupstys
a931b9eaf1 HOST_NAME_MAX and LOGIN_NAME_MAX availability is not consistent across linux/android/macos platforms. However all of them do have versions of these macros with _POSIX_ prefix.
In addition to that hostname and user variables may be uninitialized in some configurations, however they are always used. Initializing these arrays fixes conditional depending on uninitialized memory warning uncovered by valgrind.
2018-12-18 17:19:03 +02:00
Bartosz Taudul
083320820f OSX doesn't define HOST_NAME_MAX and LOGIN_NAME_MAX.
Fix based on patch from Jack Skalski.
2018-12-17 15:11:59 +01:00
Bartosz Taudul
a7e615d42e Cosmetics. 2018-12-17 15:09:10 +01:00
Bartosz Taudul
0b816ce0b7 Add lock termination event. 2018-12-16 20:46:33 +01:00
Bartosz Taudul
61ac0b8afc Send lock creation time. 2018-12-16 20:33:18 +01:00
Bartosz Taudul
f19b559f6e InitOnceExecuteOnce requires targeting Windows Vista.
Cygwin fix.
2018-11-25 19:03:17 +01:00
Sherief Farouk
591f04ad0f Renamed preprocessor #define for consistency. 2018-10-28 22:41:08 -07:00
Sherief Farouk
5110d55f17 Fix for using Tracy with multithreaded NT loader in Windows 10 RS5 (Issue #26) [Take 2]. 2018-10-28 18:55:55 -07:00
Sherief Farouk
27447902ef Fix for using Tracy with multithreaded NT loader in Windows 10 RS5 (Issue #26). 2018-10-27 18:13:59 -07:00
Bartosz Taudul
6be66d7a3c Fix on-demand mode. 2018-09-09 19:44:41 +02:00
Bartosz Taudul
9211ce42da Non-on-demand client is only able to handle one connection. 2018-09-09 19:42:06 +02:00
Bartosz Taudul
984a711666 Send protocol version to verify handshake. 2018-09-09 19:28:53 +02:00
Bartosz Taudul
db1d7d2c92 Free socket after disconnection. 2018-09-09 18:31:06 +02:00
Bartosz Taudul
270072b09e Require shibboleth match at start of connection. 2018-09-09 18:26:53 +02:00
Bartosz Taudul
00da3ba6eb SEGV_{BND,PKU}ERR might not be defined. 2018-08-27 14:45:07 +02:00
Bartosz Taudul
2ebe9b72d1 There's no getlogin_t() on android. 2018-08-27 13:59:19 +02:00
Bartosz Taudul
a1a9f6d610 Fix printf types. 2018-08-22 16:31:09 +02:00
Bartosz Taudul
8a78fcd2f9 Cut off Linux stack trace at sigreturn. 2018-08-21 01:53:00 +02:00
Bartosz Taudul
22346feea3 Fun fact: two threads can crash at the same time. 2018-08-21 01:45:33 +02:00
Bartosz Taudul
47943d6a86 Use proper type. 2018-08-21 01:24:00 +02:00
Bartosz Taudul
facb05f8cb Don't mark FastVector element as used until it's ready.
This should prevent a race condition that would result in invalid last
element of the queue, in case a freezed thread already got the queue
item, but didn't wrote to it (or didn't wrote fully).
2018-08-20 22:35:50 +02:00
Bartosz Taudul
8c0ff67796 Cut windows crash call stack at the exception dispatcher. 2018-08-20 22:21:35 +02:00
Bartosz Taudul
d1adf9e8d6 Allow skipping functions on top of call stack.
Note that this is on-client performance intensive and shouldn't be used,
except in special situations, like processing crashes.
2018-08-20 22:20:44 +02:00
Bartosz Taudul
b371003336 In case of manual shutdown, don't wait for lock.
All threads are freezed at this point, nothing will release it.
2018-08-20 21:49:23 +02:00
Bartosz Taudul
401ebd6f3d Use spin-lock in DequeueSerial.
A thread freezed during crash processing may hold the lock and never
release it. The old behavior would cause deadlock in such situation. The
new one can be modified to work. Also, we don't want to use timed mutex.
2018-08-20 21:40:13 +02:00
Bartosz Taudul
6d45434cb5 Implement crash handler on Linux. 2018-08-20 14:30:56 +02:00
Bartosz Taudul
53aee0e03d Fix warning. 2018-08-20 12:53:14 +02:00
Bartosz Taudul
3b526b074e Send crash report. 2018-08-20 02:23:55 +02:00
Bartosz Taudul
49e36c013f Only handle selected subset of exceptions. 2018-08-20 02:06:59 +02:00
Bartosz Taudul
0258f4a7b4 Handle crashes on windows.
When a crash happens, put all threads (bar the profiler and crash
handling ones) into the freezer, send crash notification message,
request profiler shutdown and when it does, terminate process.

The list of ignored exceptions is sorta-kinda random at the moment and
may need further expansion.
2018-08-20 01:07:33 +02:00
Bartosz Taudul
ca939ccd19 Allow external profiler shutdown requests. 2018-08-20 01:02:27 +02:00
Bartosz Taudul
d63b5431bf Discover linux kernel version. 2018-08-19 19:00:01 +02:00
Bartosz Taudul
f55b99ba7e Fix signed/unsigned. 2018-08-19 18:53:32 +02:00
Bartosz Taudul
e9170c862e System RAM discovery on Linux. 2018-08-19 18:52:04 +02:00
Bartosz Taudul
790a3ae26f Perform windows version discovery. 2018-08-19 18:43:26 +02:00
Bartosz Taudul
bd76f4cd10 Send host info in welcome message. 2018-08-19 18:19:12 +02:00
Bartosz Taudul
9c0e6620b3 Host info discovery. 2018-08-19 18:15:46 +02:00
Arvid Gerstmann
076e83635b Add possibility to explicitly avoid logging 2018-08-13 14:47:52 +02:00
Bartosz Taudul
9d051cf5ee Add support for discontinuous frames. 2018-08-05 02:15:54 +02:00