{"id":540,"date":"2010-12-24T12:01:00","date_gmt":"2010-12-24T12:01:00","guid":{"rendered":"\/blogs\/jonathan\/post\/An-XEvent-a-Day-(24-of-31)-e28093-What-is-the-callstack.aspx"},"modified":"2017-04-13T12:17:35","modified_gmt":"2017-04-13T16:17:35","slug":"an-xevent-a-day-24-of-31-what-is-the-callstack","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/","title":{"rendered":"An XEvent a Day (24 of 31) \u2013 What is the callstack?"},"content":{"rendered":"<p>One of the actions inside of Extended Events is the package0.callstack and the only description provided by sys.dm_xe_objects for the object is 16-frame call stack.&#160; If you look back at <a href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-13-of-31-the-system_health-session\/\" target=\"_blank\">The system_health Session<\/a> blog post, you\u2019ll notice that the package0.callstack Action has been added to a number of the Events that the PSS team thought were of significance to include in the Event Session.&#160; We can trigger an event that will by logged by our system_health Event Session by raising an error of severity &gt;=20 with the RAISERROR functionality in TSQL.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: green\">-- Generate a Severity 20 Error to trigger system_health\r\n-- sqlserver.error_reported Event\r\n<\/span><span style=\"color: blue\">RAISERROR<\/span><span style=\"color: gray\">(<\/span>50001<span style=\"color: gray\">, <\/span>20<span style=\"color: gray\">, <\/span>1<span style=\"color: gray\">, <\/span><span style=\"color: red\">'This is an Error!'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">WITH <\/span><span style=\"color: magenta\">LOG<\/span><\/pre>\n<\/blockquote>\n<blockquote>\n<p><a href=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/59028f0c\/image.png\" target=\"_blank\"><img fetchpriority=\"high\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png\" width=\"644\" height=\"158\" \/><\/a><\/p>\n<\/blockquote>\n<p>After raising the error, we can query the system_health Event Session for the callstacks that have been collected by adding into our XQuery a filter for the action node with the @name attribute = \u201ccallstack\u201d<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">SELECT <\/span>n<span style=\"color: gray\">.<\/span>query<span style=\"color: gray\">(<\/span><span style=\"color: red\">'.'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>callstack\r\n<span style=\"color: blue\">FROM\r\n<\/span><span style=\"color: gray\">(\r\n    <\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: magenta\">CAST<\/span><span style=\"color: gray\">(<\/span>target_data <span style=\"color: blue\">as xml<\/span><span style=\"color: gray\">)\r\n    <\/span><span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_sessions <\/span><span style=\"color: blue\">AS <\/span>s \r\n    <span style=\"color: gray\">INNER JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_session_targets <\/span><span style=\"color: blue\">AS <\/span>t\r\n        <span style=\"color: blue\">ON <\/span>s<span style=\"color: gray\">.<\/span><span style=\"color: blue\">address <\/span><span style=\"color: gray\">= <\/span>t<span style=\"color: gray\">.<\/span>event_session_address\r\n    <span style=\"color: blue\">WHERE <\/span>s<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'system_health'\r\n      <\/span><span style=\"color: gray\">AND <\/span>t<span style=\"color: gray\">.<\/span>target_name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'ring_buffer'\r\n<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>src <span style=\"color: gray\">(<\/span>target_data<span style=\"color: gray\">)\r\nCROSS APPLY <\/span>target_data<span style=\"color: gray\">.<\/span>nodes<span style=\"color: gray\">(<\/span><span style=\"color: red\">'RingBufferTarget\/event\/action[@name=&quot;callstack&quot;]'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>q<span style=\"color: gray\">(<\/span>n<span style=\"color: gray\">)<\/span><\/pre>\n<\/blockquote>\n<p>This will only return the action nodes for the callstack and the XML fragment will be similar to the following:<\/p>\n<blockquote>\n<pre class=\"code\">    <span style=\"color: blue\">&lt;<\/span><span style=\"color: #a31515\">action <\/span><span style=\"color: red\">name<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">callstack<\/span>&quot; <span style=\"color: red\">package<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">package0<\/span>&quot;<span style=\"color: blue\">&gt;\r\n      &lt;<\/span><span style=\"color: #a31515\">type <\/span><span style=\"color: red\">name<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">callstack<\/span>&quot; <span style=\"color: red\">package<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">package0<\/span>&quot; <span style=\"color: blue\">\/&gt;\r\n      &lt;<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;<\/span>0x0000000001CD4F55\r\n0x000000000113A310\r\n0x0000000000BEA7D0\r\n0x0000000001A3A0CC\r\n0x0000000002FA3EAE\r\n0x0000000000BC9616\r\n0x0000000000BCABBB\r\n0x0000000000BCA4D9\r\n0x0000000000BCD10B\r\n0x0000000000BC7C9B\r\n0x0000000000B6163B\r\n0x0000000000B612FA\r\n0x0000000000B60E35\r\n0x00000000010E0E50\r\n0x00000000010E09A0\r\n0x00000000010F9AB0<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;\r\n      &lt;<\/span><span style=\"color: #a31515\">text <\/span><span style=\"color: blue\">\/&gt;\r\n    &lt;\/<\/span><span style=\"color: #a31515\">action<\/span><span style=\"color: blue\">&gt;\r\n<\/span><\/pre>\n<\/blockquote>\n<p>&#160;<\/p>\n<p>So what is it about this information that would make it important enough to collect?&#160; The callstack provides the most recent 16 frames inside of the sqlservr process.&#160; If you create a dump file of the sqlservr process using sqldumper.exe, you canopen the mdmp file up in windbg, load the public symbols for sql&#160; Server, and then walk the stack with the ln &lt;stack address&gt; command.&#160; For example the above callstack resolves in windbg as:<\/p>\n<blockquote>\n<p>(00000000`01cd4f10)&#160;&#160; sqlservr!GenericEvent::CallNextAction+0x45&#160;&#160; |&#160; (00000000`01cd5000)&#160;&#160; sqlservr!AutoSpinlockHolder&lt;170,1,1&gt;::~AutoSpinlockHolder&lt;170,1,1&gt;<br \/>\n    <br \/>(00000000`00b78be0)&#160;&#160; sqlservr!_chkstk+0xf276c&#160;&#160; |&#160; (00000000`00b78c30)&#160;&#160; sqlservr!IsWorktableRowset <\/p>\n<p>(00000000`00bea640)&#160;&#160; sqlservr!ErrorReportedAutoPublish::Publish+0x190&#160;&#160; |&#160; (00000000`00bea820)&#160;&#160; sqlservr!CErrorReportingManager::CwchCallFormatMessage <\/p>\n<p>(00000000`00b78be0)&#160;&#160; sqlservr!_chkstk+0x1bd96d&#160;&#160; |&#160; (00000000`00b78c30)&#160;&#160; sqlservr!IsWorktableRowset <\/p>\n<p>(00000000`02fa3800)&#160;&#160; sqlservr!CXStmtError::XretExecute+0x6ae&#160;&#160; |&#160; (00000000`02fa44b0)&#160;&#160; sqlservr!CStmtDbcc::XretExecute <\/p>\n<p>(00000000`00bc8f80)&#160;&#160; sqlservr!CMsqlExecContext::ExecuteStmts&lt;1,1&gt;+0x55a&#160;&#160; |&#160; (00000000`00bc9e30)&#160;&#160; sqlservr!CSessionTaskProxy::AddRef <\/p>\n<p>(00000000`00bca630)&#160;&#160; sqlservr!CMsqlExecContext::FExecute+0x58b&#160;&#160; |&#160; (00000000`00bcad60)&#160;&#160; sqlservr!CExecParamTblHelperForExecParamTable::`vftable&#8217; <\/p>\n<p>(00000000`00bca1c0)&#160;&#160; sqlservr!CSQLSource::Execute+0x319&#160;&#160; |&#160; (00000000`00bca630)&#160;&#160; sqlservr!CMsqlExecContext::FExecute <\/p>\n<p>(00000000`00bcd1a0)&#160;&#160; sqlservr!process_request+0x370&#160;&#160; |&#160; (00000000`00bcd6c0)&#160;&#160; sqlservr!CAutoSetupCXCtxtS::~CAutoSetupCXCtxtS <\/p>\n<p>(00000000`00bc7990)&#160;&#160; sqlservr!process_commands+0x2b2&#160;&#160; |&#160; (00000000`00bc7c10)&#160;&#160; sqlservr!CConnection::PNetConn <\/p>\n<p>(00000000`00b61520)&#160;&#160; sqlservr!SOS_Task::Param::Execute+0x11b&#160;&#160; |&#160; (00000000`00b616f0)&#160;&#160; sqlservr!Worker::Reset <\/p>\n<p>(00000000`00b61230)&#160;&#160; sqlservr!SOS_Scheduler::RunTask+0xca&#160;&#160; |&#160; (00000000`00b61520)&#160;&#160; sqlservr!SOS_Task::Param::Execute <\/p>\n<p>(00000000`00b60da0)&#160;&#160; sqlservr!SOS_Scheduler::ProcessTasks+0x95&#160;&#160; |&#160; (00000000`00b61090)&#160;&#160; sqlservr!WorkDispatcher::DequeueTask <\/p>\n<p>(00000000`010e0d40)&#160;&#160; sqlservr!SchedulerManager::WorkerEntryPoint+0x110&#160;&#160; |&#160; (00000000`010e0ea0)&#160;&#160; sqlservr!SOSQueueCounted&lt;Worker,0&gt;::Dequeue <\/p>\n<p>(00000000`010e0940)&#160;&#160; sqlservr!SystemThread::RunWorker+0x60&#160;&#160; |&#160; (00000000`010e0a10)&#160;&#160; sqlservr!SchedulerManager::AcquireWorker <\/p>\n<p>(00000000`010f9980)&#160;&#160; sqlservr!SystemThreadDispatcher::ProcessWorker+0x12c&#160;&#160; |&#160; (00000000`010f9b00)&#160;&#160; sqlservr!SEList&lt;SystemThread,112&gt;::Head<\/p>\n<\/blockquote>\n<blockquote>\n<p><a href=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/52db4271\/image.png\" target=\"_blank\"><img decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/23a956da\/image_thumb.png\" width=\"644\" height=\"315\" \/><\/a> <\/p>\n<\/blockquote>\n<p>This information isn\u2019t really of much use unless you have access to or understand the SQL Server Source code.&#160; In the event that you have an issue, the PSS team can create a memory dump of the process, collect the output from the ring_buffer target, and walk the stack to see what lead to the Event firing. <\/p>\n<p>It is possible to materialize the stack without having to actually perform a memory dump and without using windbg.&#160; In the SQLCAT team blog post <a href=\"https:\/\/blogs.msdn.microsoft.com\/b\/sqlcat\/archive\/2010\/05\/11\/resolving-dtc-related-waits-and-tuning-scalability-of-dtc.aspx\">Resolving DTC Related Waits and Tuning Scalability of DTC<\/a>, Trace Flag 3656 is documented as materializing the callstack if the sqlservr.pdb symbols file exists in the same directory as sqlservr.exe.&#160; <\/p>\n<p><strong>NOTE: There is a reason that this functionality is not turned on by default in SQL Server.&#160; It is not recommended that you enable this Trace Flag on a production server unless directed to do so by PSS as a part of a support case.&#160; This Trace Flag can impact performance and should not be used lightly.<\/strong><\/p>\n<p>In SQL Server 2008, the symbols file is not included by default in the product.&#160; To get the symbols file, you can use windbg and a memory dump.&#160; For steps on how to do this, see <a title=\"http:\/\/blogs.msdn.com\/b\/askjay\/archive\/2009\/12\/29\/basic-debugging-concepts-and-setup.aspx\" href=\"https:\/\/blogs.msdn.microsoft.com\/b\/askjay\/archive\/2009\/12\/29\/basic-debugging-concepts-and-setup.aspx\">http:\/\/blogs.msdn.com\/b\/askjay\/archive\/2009\/12\/29\/basic-debugging-concepts-and-setup.aspx<\/a>.&#160; Once you open the memory dump file for the first time, the symbols are downloaded from the public symbols server and placed in the .sympath specified, in the case of the blog post mentioned it will be C:\\symbols\\public\\sq\\sqlservr.pdb\\1E7168D2F78B4FBA911F507689D7DE902.&#160; After copying the pdb to the Binn folder for the SQL instance, by default C:\\Program Files\\Microsoft SQL Server\\MSSQL10.MSSQLSERVER\\MSSQL\\Binn, we can turn on the trace flag and requery our Event Session.<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: green\">--Trace flag 3656 enables the call stacks to be resolved.  This requires that the \r\n--sqlservr.pdb file reside in the same directory as sqlservr.exe\r\n<\/span><span style=\"color: blue\">DBCC <\/span>TRACEON <span style=\"color: gray\">(<\/span>3656<span style=\"color: gray\">, -<\/span>1<span style=\"color: gray\">)  \r\n<\/span><span style=\"color: blue\">GO\r\nSELECT <\/span>n<span style=\"color: gray\">.<\/span>query<span style=\"color: gray\">(<\/span><span style=\"color: red\">'.'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>callstack\r\n<span style=\"color: blue\">FROM\r\n<\/span><span style=\"color: gray\">(\r\n    <\/span><span style=\"color: blue\">SELECT <\/span><span style=\"color: magenta\">CAST<\/span><span style=\"color: gray\">(<\/span>target_data <span style=\"color: blue\">as xml<\/span><span style=\"color: gray\">)\r\n    <\/span><span style=\"color: blue\">FROM <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_sessions <\/span><span style=\"color: blue\">AS <\/span>s \r\n    <span style=\"color: gray\">INNER JOIN <\/span><span style=\"color: green\">sys<\/span><span style=\"color: gray\">.<\/span><span style=\"color: green\">dm_xe_session_targets <\/span><span style=\"color: blue\">AS <\/span>t\r\n        <span style=\"color: blue\">ON <\/span>s<span style=\"color: gray\">.<\/span><span style=\"color: blue\">address <\/span><span style=\"color: gray\">= <\/span>t<span style=\"color: gray\">.<\/span>event_session_address\r\n    <span style=\"color: blue\">WHERE <\/span>s<span style=\"color: gray\">.<\/span>name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'system_health'\r\n      <\/span><span style=\"color: gray\">AND <\/span>t<span style=\"color: gray\">.<\/span>target_name <span style=\"color: gray\">= <\/span><span style=\"color: red\">'ring_buffer'\r\n<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">AS <\/span>src <span style=\"color: gray\">(<\/span>target_data<span style=\"color: gray\">)\r\nCROSS APPLY <\/span>target_data<span style=\"color: gray\">.<\/span>nodes<span style=\"color: gray\">(<\/span><span style=\"color: red\">'RingBufferTarget\/event\/action[@name=&quot;callstack&quot;]'<\/span><span style=\"color: gray\">) <\/span><span style=\"color: blue\">as <\/span>q<span style=\"color: gray\">(<\/span>n<span style=\"color: gray\">)<\/span><\/pre>\n<\/blockquote>\n<p>The output of our callstack action is now:<\/p>\n<blockquote>\n<pre class=\"code\"><span style=\"color: blue\">&lt;<\/span><span style=\"color: #a31515\">action <\/span><span style=\"color: red\">name<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">callstack<\/span>&quot; <span style=\"color: red\">package<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">package0<\/span>&quot;<span style=\"color: blue\">&gt;\r\n  &lt;<\/span><span style=\"color: #a31515\">type <\/span><span style=\"color: red\">name<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">callstack<\/span>&quot; <span style=\"color: red\">package<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">package0<\/span>&quot; <span style=\"color: blue\">\/&gt;\r\n  &lt;<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;<\/span>GenericEvent::CallNextAction+45 [ @ 0+0x0\r\n_chkstk+f276c [ @ 0+0x0\r\nErrorReportedAutoPublish::Publish+190 [ @ 0+0x0\r\n_chkstk+1bd96d [ @ 0+0x0\r\nCXStmtError::XretExecute+6ae [ @ 0+0x0\r\nCMsqlExecContext::ExecuteStmts<span style=\"color: red\">&amp;lt;<\/span>1,1<span style=\"color: red\">&amp;gt;<\/span>+55a [ @ 0+0x0\r\nCMsqlExecContext::FExecute+58b [ @ 0+0x0\r\nCSQLSource::Execute+319 [ @ 0+0x0\r\nprocess_request+370 [ @ 0+0x0\r\nprocess_commands+2b2 [ @ 0+0x0\r\nSOS_Task::Param::Execute+11b [ @ 0+0x0\r\nSOS_Scheduler::RunTask+ca [ @ 0+0x0\r\nSOS_Scheduler::ProcessTasks+95 [ @ 0+0x0\r\nSchedulerManager::WorkerEntryPoint+110 [ @ 0+0x0\r\nSystemThread::RunWorker+60 [ @ 0+0x0\r\nSystemThreadDispatcher::ProcessWorker+12c [ @ 0+0x0<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">value<\/span><span style=\"color: blue\">&gt;\r\n  &lt;<\/span><span style=\"color: #a31515\">text <\/span><span style=\"color: blue\">\/&gt;\r\n&lt;\/<\/span><span style=\"color: #a31515\">action<\/span><span style=\"color: blue\">&gt;<\/span><\/pre>\n<\/blockquote>\n<p>If you note, these match up to the stack output from windbg.&#160; If you are interested in trying to figure out the internal stack of SQL Server, the package0.callstack event can certainly be useful, but in general it is not something that you will get much use of in general troubleshooting with Extended Events.&#160; <\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the actions inside of Extended Events is the package0.callstack and the only description provided by sys.dm_xe_objects for the object is 16-frame call stack.&#160; If you look back at The system_health Session blog post, you\u2019ll notice that the package0.callstack Action has been added to a number of the Events that the PSS team thought [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,38,45],"tags":[],"class_list":["post-540","post","type-post","status-publish","format-standard","hentry","category-extended-events","category-sql-server-2008","category-xevent-a-day-series"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"One of the actions inside of Extended Events is the package0.callstack and the only description provided by sys.dm_xe_objects for the object is 16-frame call stack.&#160; If you look back at The system_health Session blog post, you\u2019ll notice that the package0.callstack Action has been added to a number of the Events that the PSS team thought [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-24T12:01:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:17:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"An XEvent a Day (24 of 31) \u2013 What is the callstack?\",\"datePublished\":\"2010-12-24T12:01:00+00:00\",\"dateModified\":\"2017-04-13T16:17:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/\"},\"wordCount\":791,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.SQLskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windows-live-writer\\\/anxeventaday24of31whatisthecallstack\\\/3404ce93\\\/image_thumb.png\",\"articleSection\":[\"Extended Events\",\"SQL Server 2008\",\"XEvent a Day Series\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/\",\"name\":\"An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.SQLskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windows-live-writer\\\/anxeventaday24of31whatisthecallstack\\\/3404ce93\\\/image_thumb.png\",\"datePublished\":\"2010-12-24T12:01:00+00:00\",\"dateModified\":\"2017-04-13T16:17:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.SQLskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windows-live-writer\\\/anxeventaday24of31whatisthecallstack\\\/3404ce93\\\/image_thumb.png\",\"contentUrl\":\"https:\\\/\\\/www.SQLskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windows-live-writer\\\/anxeventaday24of31whatisthecallstack\\\/3404ce93\\\/image_thumb.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/an-xevent-a-day-24-of-31-what-is-the-callstack\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extended Events\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/extended-events\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"An XEvent a Day (24 of 31) \u2013 What is the callstack?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/","og_locale":"en_US","og_type":"article","og_title":"An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias","og_description":"One of the actions inside of Extended Events is the package0.callstack and the only description provided by sys.dm_xe_objects for the object is 16-frame call stack.&#160; If you look back at The system_health Session blog post, you\u2019ll notice that the package0.callstack Action has been added to a number of the Events that the PSS team thought [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/","og_site_name":"Jonathan Kehayias","article_published_time":"2010-12-24T12:01:00+00:00","article_modified_time":"2017-04-13T16:17:35+00:00","og_image":[{"url":"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png","type":"","width":"","height":""}],"author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"An XEvent a Day (24 of 31) \u2013 What is the callstack?","datePublished":"2010-12-24T12:01:00+00:00","dateModified":"2017-04-13T16:17:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/"},"wordCount":791,"commentCount":0,"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#primaryimage"},"thumbnailUrl":"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png","articleSection":["Extended Events","SQL Server 2008","XEvent a Day Series"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/","name":"An XEvent a Day (24 of 31) \u2013 What is the callstack? - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#primaryimage"},"thumbnailUrl":"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png","datePublished":"2010-12-24T12:01:00+00:00","dateModified":"2017-04-13T16:17:35+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#primaryimage","url":"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png","contentUrl":"https:\/\/www.SQLskills.com\/blogs\/jonathan\/wp-content\/uploads\/windows-live-writer\/anxeventaday24of31whatisthecallstack\/3404ce93\/image_thumb.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/an-xevent-a-day-24-of-31-what-is-the-callstack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Extended Events","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/extended-events\/"},{"@type":"ListItem","position":3,"name":"An XEvent a Day (24 of 31) \u2013 What is the callstack?"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=540"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/540\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}