title: UnsafeQueueUserWorkItem and what exactly does "does not propagate the calling stack" mean?
body: <p>I am reading and learning about <code>ThreadScheduler</code> and articles around Tasks and came across the function <code>ThreadPool.UnsafeQueueUserWorkItem</code> used in one of the <a href="http://msdn.microsoft.com/en-us/library/system.threading.tasks.taskscheduler.aspx">MSDN examples</a> about own ThreadSchedulers. In the MSDN <a href="http://msdn.microsoft.com/en-us/library/system.threading.threadpool.unsafequeueuserworkitem.aspx">description about UnsafeQueueUserWorkItem</a> there is a big warning that the function may be an security hole and that it "<em>does not propagate the calling stack</em>".</p>
  
  <p>The only link is to <code>QueueUserWorkItem</code> which - from the name - seems to be the "safe counterpart"? but does not mention anything about calling stacks either.</p>
  
  <p>What does that exactly mean to propagate a stack? Copy it over before the work starts? Why would another thread need the stack of the calling thread anyway? I would assume that they start with a fresh and empty stack. After all, when the thread function returns, it does not continue to execute the function scheduling the Task, right?</p>