summaryrefslogtreecommitdiff
path: root/src/vm/eventpipesession.cpp
AgeCommit message (Collapse)AuthorFilesLines
2019-04-02[EventPipe] Streaming events out-of-proc using IPC (#23448)José Rivero1-3/+1
- There was a race condition on EventPipe::Disable where we deallocated the s_pSession and set it to NULL, but there was still a thread waiting to write and dereference the null pointer. Now, we check that the session is not null. - Added a new attach event to be handled to the Diagnostic server: Add streaming functionality (Syncronus) #23299 - On Linux, IPC was failing when delete was invoked because we were using new (std::nothrow) instead of new (nothrow) when allocating the newly connected clients/streams. I have replaced the call with new. This fixed #23580 - Move multiFileTraceLengthInSeconds out of the EventPipeSession. - Unlink previously existing socket. - EventPipeBlock: _ASSERTE was updated not to fail when data is not aligned if an error has already occurred. - Update _ASSERTE in fastserializer.cpp to take into account the the write operation could have failed.
2019-03-18[EventPipe] Adding an IPC server to handle out of process communication. ↵José Rivero1-220/+6
(#23106) This is the first commit to enable a "diagnostic port" using IPC (Named Pipe on Windows and Unix Domain Socket on other platforms). This change currently enable EventPipe to be enabled/disabled without the use of a file drop. - Split the DiagnosticsIpc into (DiagnosticsIpc/IpcStream) - DiagnosticsIpc (IPC listener) is meant to be used by the Diagnostic server. - IpcStream (IPC channel) is meant to be use to communicate with the connected client. - Change the FastSerializer dependency from `CFileStream` to `StreamWriter` This abstraction is meant decouple the writing of objects in order to extend its usability. The main objective is to reuse FastSerializer to stream data through the open IPC channel. - Moved the EventPipeSessionProvider* classes to their own file. - Added a more streamlined parsing achievable by defining a simpler binary protocol (by noahfalk). 1. Only one allocation is needed for the EventPipeProviderConfiguration array, no allocations or copies are needed for strings because we can refer to them directly out of the incoming command buffer 2. No change to the EventPipe API for enable is required. EventPipeProviderConfiguration retains its current behavior of not deleting the string pointers it holds. 3. No leaks happen because the command buffer owns the string memory and ensures that it stays alive for the duration of the Enable() call.
2018-11-08EventPipe support for "Parameters" (#20796)José Rivero1-8/+27
These changes enable passing "arguments" to an EventSource.
2018-10-25Add EventPipe Config File Option MultiFileSec (#20548)Brian Robbins1-1/+3
2018-10-05Enable Config-File Based Control of EventPipe (#20238)Brian Robbins1-28/+14
2018-08-01Expose OSThreadId and TimeStamp on EventWrittenEventArgs (#19002)Brian Robbins1-0/+2
* Add EventWrittenEventArgs public properties OSThreadId and TimeStamp and plumb through OSThreadId. * Plumb ActivityId and RelatedActivityId to EventListener.
2018-07-02Dispatch Runtime Events to EventListener (#18649)Brian Robbins1-0/+2
2018-01-25Create the concept of EventPipeSession and refactor EventPipe to use it. ↵Brian Robbins1-0/+296
Also expose COMPlus configuration variables to support session configuration and output file path. (#16018)