[IronPython] Silverlight - Cannot save value from target back to source

Lukas Cenovsky cenovsky at bakalari.cz
Fri Sep 3 19:39:32 CEST 2010


  I do not have any Mountains.filtered.set method - I think clrtype 
metaclass adds it. You can see the part I wrote (filtered property) 
below or in the attachment where I put the whole testing sources.

Running the same code in the desktop CLR works fine (wpf.py).

--
-- Lukáš


On 3.9.2010 19:11, Dino Viehland wrote:
>
> Does this only happen in debug mode?  Do you have a class or a method 
> named like Mountains.filtered.set (in other words do you have any idea 
> of what this code is)?   Or are you maybe deriving from a class named 
> Mountains which has a set method?
>
> Ultimately what I'm getting at is it'd be good to run this on the 
> desktop CLR and get the same method created.  So if you can isolate 
> the code then run it on the desktop you could run w/ the 
> --X:SaveAssemblies option.  That will write out the IL we generate to 
> disk as a Snippets.scripting.dll and then you can run peverify on that 
> and see if the generated code is actually unverifiable (or if maybe 
> there's a CLR bug related to verification).
>
> If there is actually unverifiable code then we have a bug we need to 
> fix.  If we have verifiable code or some difference between when we're 
> using RefEmit and DynamicMethods then maybe the CLR has a bug that 
> needs to be fixed.
>
> *From:* users-bounces at lists.ironpython.com 
> [mailto:users-bounces at lists.ironpython.com] *On Behalf Of *Lukas Cenovsky
> *Sent:* Friday, September 03, 2010 9:04 AM
> *To:* Discussion of IronPython
> *Subject:* Re: [IronPython] Silverlight - Cannot save value from 
> target back to source
>
> I am trying to debug this bug and I need some help.
>
> I have built IronPython 2.6.1 - Silverlight debug binaries. I have 
> pointed VS 2010 symbols folder to the folder with these binaries.
>
> I run the Silverlight app in the debug mode (debug=true in 
> index.html), attach VS 2010 debugger, select Thrown for /Common 
> Language Runtime Exceptions/ and /Managed Debugging Assistants/ in 
> Debug - Exceptions dialog.
>
> All symbols are loaded, so I click on the checkbox button on the page. 
> The following exception occurs:
>
> System.Security.VerificationException occurred
>   Message=Operation could destabilize the runtime.
>   StackTrace:
>        at Mountains.filtered(Nullable`1 value)
>   InnerException:
>
> No source available.This is the Call stack:
>
> >    Snippets.scripting!Mountains.filtered.set(bool? value) + 0x23 bytes
>      [Native to Managed Transition]
>      [Managed to Native Transition]
>      
> System.Windows.dll!System.Windows.CLRPropertyListener.Value.set(object 
> value) + 0x23 bytes
>      
> System.Windows.dll!System.Windows.PropertyAccessPathStep.Value.set(object 
> value) + 0x10 bytes
>      
> System.Windows.dll!System.Windows.Data.BindingExpression.UpdateValue() 
> + 0x3b2 bytes
>      
> System.Windows.dll!System.Windows.Data.BindingExpression.UpdateValueIfNecessary() 
> + 0x27 bytes
>      
> System.Windows.dll!System.Windows.Data.BindingExpression.TargetPropertyChanged(System.Windows.DependencyObject 
> sender, System.Windows.DependencyProperty dp) + 0x2b bytes
>      
> System.Windows.dll!System.Windows.DependencyObject.OnPropertyChanged(System.Windows.DependencyProperty 
> dp) + 0x17 bytes
>      
> System.Windows.dll!System.Windows.FrameworkElement.OnPropertyChanged(System.Windows.DependencyProperty 
> dp) + 0x51 bytes
>      
> System.Windows.dll!System.Windows.DependencyObject.RaisePropertyChangeNotifications(System.Windows.DependencyProperty 
> dp, object oldValue, object newValue) + 0x5c bytes
>      
> System.Windows.dll!System.Windows.DependencyObject.UpdateEffectiveValue(System.Windows.DependencyProperty 
> property, System.Windows.EffectiveValueEntry oldEntry, ref 
> System.Windows.EffectiveValueEntry newEntry, 
> System.Windows.DependencyObject.ValueOperation operation) + 0xf6 bytes
>      
> System.Windows.dll!System.Windows.DependencyObject.SetValueInternal(System.Windows.DependencyProperty 
> dp, object value, bool allowReadOnlySet) + 0x1da bytes
>      
> System.Windows.dll!System.Windows.Controls.Primitives.ToggleButton.OnToggle() 
> + 0x8d bytes
>      
> System.Windows.dll!System.Windows.Controls.Primitives.ToggleButton.OnClick() 
> + 0xf bytes
>      
> System.Windows.dll!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs 
> e) + 0x8e bytes
>      
> System.Windows.dll!System.Windows.Controls.Control.OnMouseLeftButtonUp(System.Windows.Controls.Control 
> ctrl, System.EventArgs e) + 0x31 bytes
>      System.Windows.dll!MS.Internal.JoltHelper.FireEvent(System.IntPtr 
> unmanagedObj, System.IntPtr unmanagedObjArgs, int argsTypeIndex, 
> string eventName) + 0x234 bytes
>      [Appdomain Transition]
>
> I click Step Into and another exception occurs:
>
> System.Reflection.TargetInvocationException occurred
>   Message=Exception has been thrown by the target of an invocation.
>   StackTrace:
>        at 
> System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 
> method, Object target, Object[] arguments, SignatureStruct& sig, 
> MethodAttributes methodAttributes, RuntimeType typeOwner)
>        at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
> BindingFlags invokeAttr, Binder binder, Object[] parameters, 
> CultureInfo culture, Boolean skipVisibilityChecks)
>   InnerException: System.TypeInitializationException
>        Message=The type initializer for 
> 'Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.DebugeeHost' 
> threw an exception.
>        
> TypeName=Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.DebugeeHost
>        InnerException: System.TypeLoadException
>             Message=Could not load type 'System.MarshalByRefObject' 
> from assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, 
> PublicKeyToken=7cec85d7bea7798e'.
>             StackTrace:
>                  at 
> Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.DebugeeHost..cctor()
>             InnerException:
>
> Stepping further shows the System.Windows.Data error I posted below.
>
> Any ideas/hints? Thank you.
>
> --
> -- Lukáš
>
>
> On 2.9.2010 20:39, Lukas Cenovsky wrote:
>
>  Following my binding experiments in WPF, I tried to convert the 
> sample into Silverlight and I hit another binding errors there.
>
> When I bind anything else than string, I receive an error when the 
> target value is changed and the source should be updated. This happens 
> in all IronPython versions (2.6.1 on .Net 2.0 and 4, 2.7a1).
>
> Here is the code I use (the whole source is attached):
>
>     @property
>     @clrtype.accepts()
>     @clrtype.returns(System.Nullable[System.Boolean])
>     def filtered(self):
>         return self._filtered
>
>     @filtered.setter
>     @clrtype.accepts(System.Nullable[System.Boolean])
>     @clrtype.returns()
>     def filtered(self, value):
>         self._filtered = value
>         self.OnPropertyChanged('filtered')
>
> As you can see I tried to use System.Nullable[System.Boolean] instead 
> of bool but it did not help. I also tried to use converter and convert 
> the value to this type (System.Nullable[System.Boolean](value)) but 
> that did not help either. All resulted in the following exception for 
> bool type.
>
> System.Windows.Data Error: Cannot save value from target back to 
> source. BindingExpression: Path='filtered' DataItem='Mountains' 
> (HashCode=2058916); target element is 
> 'System.Windows.Controls.CheckBox' (Name=''); target property is 
> 'IsChecked' (type 'System.Nullable`1[System.Boolean]').. 
> System.Reflection.TargetInvocationException: Exception has been thrown 
> by the target of an invocation. ---> 
> System.Security.VerificationException: Operation could destabilize the 
> runtime.
>    at Mountains.filtered(Nullable`1 value)
>    --- End of inner exception stack trace ---
>    at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 
> method, Object target, Object[] arguments, SignatureStruct& sig, 
> MethodAttributes methodAttributes, RuntimeType typeOwner)
>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
> BindingFlags invokeAttr, Binder binder, Object[] parameters, 
> CultureInfo culture, Boolean skipVisibilityChecks)
>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
> BindingFlags invokeAttr, Binder binder, Object[] parameters, 
> CultureInfo culture)
>    at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, 
> Object value, BindingFlags invokeAttr, Binder binder, Object[] index, 
> CultureInfo culture)
>    at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, 
> Object value, Object[] index)
>    at System.Windows.CLRPropertyListener.set_Value(Object value)
>    at System.Windows.PropertyAccessPathStep.set_Value(Object value)
>    at System.Windows.Data.BindingExpression.UpdateValue().
>
> The similar exception is raised for float or System.Double.
>
> I have found an old issue similar to this: 
> http://ironpython.codeplex.com/workitem/16831?ProjectName=ironpython
>
> Any workaround would be nice for this bug :-)
>
> -- 
> -- Lukáš
>
>   
>   
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com  <mailto:Users at lists.ironpython.com>
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20100903/d8e5cc80/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: src.zip
Type: application/x-zip-compressed
Size: 12953 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20100903/d8e5cc80/attachment.bin>


More information about the Ironpython-users mailing list