1) What happened
When using the Threadpool, exceptions are silently caught.
This is very bad for application consistency/correctness/stability etc. Standard .NET behaviour is to terminate the application when an unhandled threadpool exception occurs (http://msdn.microsoft.com/en-us/library/0ka9477y.aspx
), but Unity3d soldiers on.
I spent a few days tracking down a bug in my code that was obfuscated by this silent catch behaviour. I understand that it's not cool if Unity3d were to crash / terminate when a game is running, but at the very least, there should be a mechanism to draw attention to exceptions that occur in the threadpool, as many of them will put the application into an inconsistent/invalid state. With appropriate exception handling, consistency can be maintained.
Also, anyone from a .NET background will likely make assumptions about the threadpool's behaviour.
2) How can we reproduce it using the example you attached
I didn't attach an example, but it should be easy to reproduce.
* Create a blank project
* Create a mono behaviour of some sort
* Dispatch some work to the threadpool via ThreadPool.QueueUserWorkItem(WaitCallback callback, object state) (http://msdn.microsoft.com/en-us/library/4yd16hza.aspx
* Somewhere in the WaitCallback method that runs on the threadpool, throw an exception
* Confirm that no exception is reported in the editor