[IronPython] IronPython and Threads
curt at hagenlocher.org
Sun Jun 8 19:04:02 CEST 2008
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
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 <dan.eloff at gmail.com> 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
> IronPython 2.0 Beta (188.8.131.520) 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)
> 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?
> Users mailing list
> Users at lists.ironpython.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Ironpython-users