summaryrefslogtreecommitdiff
path: root/src/vm/eventpipeeventinstance.cpp
diff options
context:
space:
mode:
authorBrian Robbins <brianrob@microsoft.com>2017-05-15 08:13:42 -0700
committerVance Morrison <vancem@microsoft.com>2017-05-15 08:13:42 -0700
commitf11f3d73eb432b1dc4c42df6eb1e1fb099222730 (patch)
tree42e34c206d1d1781cf081db699b068eaa4095cb0 /src/vm/eventpipeeventinstance.cpp
parentc4db3ea4f2912288256f55d16dffe225abbb72e8 (diff)
downloadcoreclr-f11f3d73eb432b1dc4c42df6eb1e1fb099222730.tar.gz
coreclr-f11f3d73eb432b1dc4c42df6eb1e1fb099222730.tar.bz2
coreclr-f11f3d73eb432b1dc4c42df6eb1e1fb099222730.zip
EventPipe: Prepend variable length field sizes (#11600)
* Write the size in bytes of the stack before the stack contents. * Specify the size of the metadata payload explicitly in the file.
Diffstat (limited to 'src/vm/eventpipeeventinstance.cpp')
-rw-r--r--src/vm/eventpipeeventinstance.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/vm/eventpipeeventinstance.cpp b/src/vm/eventpipeeventinstance.cpp
index dc84c04178..4527ed5b26 100644
--- a/src/vm/eventpipeeventinstance.cpp
+++ b/src/vm/eventpipeeventinstance.cpp
@@ -101,6 +101,7 @@ void EventPipeEventInstance::FastSerialize(FastSerializer *pSerializer, StreamLa
sizeof(m_threadID) + // Thread ID
sizeof(m_timeStamp) + // TimeStamp
m_dataLength + // Event payload data length
+ sizeof(unsigned int) + // Prepended stack payload size in bytes
m_stackContents.GetSize(); // Stack payload size
// Write the size of the event to the file.
@@ -121,10 +122,14 @@ void EventPipeEventInstance::FastSerialize(FastSerializer *pSerializer, StreamLa
pSerializer->WriteBuffer(m_pData, m_dataLength);
}
+ // Write the size of the stack in bytes.
+ unsigned int stackSize = m_stackContents.GetSize();
+ pSerializer->WriteBuffer((BYTE*)&stackSize, sizeof(stackSize));
+
// Write the stack if present.
- if(m_stackContents.GetSize() > 0)
+ if(stackSize > 0)
{
- pSerializer->WriteBuffer(m_stackContents.GetPointer(), m_stackContents.GetSize());
+ pSerializer->WriteBuffer(m_stackContents.GetPointer(), stackSize);
}
}