Under CLR 2, any uncaught exception in a thread other than the primary thread will take down the entire process. This is not specific to IronPython. I don't know what the Silverlight CLR will do under these circumstances.
You could make a case that a Python-initiated thread shouldn't terminate the process given that CPython wouldn't do the same, but as far as I know, we haven't gotten any requests along those lines. For now, you'll probably want to wrap any function used as a thread "main" in a try/except and do something to log the error in the exception handler. On Sun, Jun 8, 2008 at 8:23 AM, Dan Eloff <[EMAIL PROTECTED]> wrote: > I'm having a problem debugging some issues that I suspect are thread > related in Silverlight. My application is failing silently, so I have > no way to be sure yet. Is it possible that exceptions in a background > thread are quietly swallowed? I'm pretty sure my callback is being > called, but all that is in it right now is a raise statement. > > I've enabled debug. > <param name="initParams" value="debug=true,reportErrors=errorLocation" /> > > I've been trying to explore Threads a little more with IronPython to > see what might be the problem, but even there I'm not having much > luck. I could swear this used to work in Beta 1. Now it crashes the > interpreter. > > IronPython 2.0 Beta (2.0.0.2000) on .NET 2.0.50727.1433 > Copyright (c) Microsoft Corporation. All rights reserved. > >>> from System.Threading import Thread, ThreadStart > >>> def foo(): > ... raise ValueError > ... > >>> t = Thread(ThreadStart(foo)) > >>> t.Start() > >>> > Unhandled Exception: System.ArgumentException > at foo$1##16(Closure ) > at _stub_##25(Closure , CallSite , CodeContext , Object ) > at Microsoft.Scripting.Utils.InvokeHelper`5.Invoke(Object arg0, > Object arg1, Object arg2, Object arg3) > at Microsoft.Scripting.Utils.ReflectedCaller.InvokeInstance(Object > instance, Object[] args) > at > Microsoft.Scripting.Actions.ActionBinder.UpdateSiteAndExecute[T](CodeContext > context, CallSite`1 site, Object[] args) > at Microsoft.Scripting.Actions.UpdateDelegates.Update1[T0,TRet](CallSite > site, CodeContext context, T0 arg0) > at System.Void(), using PythonBinder##20(Closure ) > at System.Threading.ExecutionContext.Run(ExecutionContext > executionContext, ContextCallback callback, Object state) > at System.Threading.ThreadHelper.ThreadStart() > > What's going wrong? How should I be doing this? > > Thanks, > -Dan > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >
_______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
