[Mono-osx] Generic method failing "at mini-generic-sharing.c:407, condition `!(*oti)->data' not met"
Rodrigo Kumpera
kumpera at gmail.com
Thu Sep 29 20:37:03 EDT 2011
Please file a bug report with a test case attached.
On Thu, Sep 29, 2011 at 8:22 PM, Phi Le <iamphi at gmail.com> wrote:
> Hello osx mono developers,
>
> I am getting "* Assertion at mini-generic-sharing.c:407, condition
> `!(*oti)->data' not met " and the application crash when using generic
> method in a particular way. If AttachedProperty is made into a class
> instead of struct then SetAttachedProperty works, but not
> GetAttachedProperty.
>
> If I replace those methods with equivalent extension methods, the problem
> goes way (AttachedProperty still a struct).
>
> I am experiencing this with mono 2.10.4 and 2.10.5 on os x 10.6 and 10.7.
>
> Phi
>
> ### Generic methods that break (full code):
> public struct AttachedProperty<T> {
> public string Name { get; private set; }
> public T DefaultValue { get; private set; }
>
> public AttachedProperty(string name, T defaultValue) : this() {
> Name = name;
> DefaultValue = defaultValue;
> }
>
> public Type PropertyType {
> get { return typeof(T); }
> }
> }
>
> internal readonly TypedHashtable<object, object> _AttachedProperties
> = new TypedHashtable<object, object>();
>
> public void SetAttachedProperty<T>(AttachedProperty<T> prop, T val)
> {
> _AttachedProperties[prop] = val;
> }
>
> public T GetAttachedProperty<T>(AttachedProperty<T> prop) {
> return (T)(_AttachedProperties[prop] ?? prop.DefaultValue);
> }
>
> ### Replacement extension methods:
> public static void SetAttachedProperty<T>(this WindowlessControl c,
> AttachedProperty<T> prop, T val) {
> c._AttachedProperties[prop] = val;
> }
>
> public static T GetAttachedProperty<T>(this WindowlessControl c,
> AttachedProperty<T> prop) {
> return (T)(c._AttachedProperties[prop] ?? prop.DefaultValue);
> }
>
> ### Crash information:
>
> * Assertion at mini-generic-sharing.c:407, condition `!(*oti)->data' not
> met
>
> 0 GenericTest 0x000b98e6
> mono_handle_native_sigsegv + 422
> 1 libSystem.B.dylib 0x94fc145b _sigtramp + 43
> 2 ??? 0xffffffff 0x0 + 4294967295
> 3 libSystem.B.dylib 0x9504e899 raise + 26
> 4 libSystem.B.dylib 0x950649b8 abort + 93
> 5 GenericTest 0x00256c41 monoeg_g_logv +
> 197
> 6 GenericTest 0x00256ca3
> monoeg_assertion_message
> + 46
> 7 GenericTest 0x000c3672
> rgctx_template_set_other_slot + 642
> 8 GenericTest 0x000c47fd
> fill_in_rgctx_template_slot + 61
> 9 GenericTest 0x000c488a
> fill_in_rgctx_template_slot + 202
> 10 GenericTest 0x000c488a
> fill_in_rgctx_template_slot + 202
> 11 GenericTest 0x000c488a
> fill_in_rgctx_template_slot + 202
> 12 GenericTest 0x000c488a
> fill_in_rgctx_template_slot + 202
> 13 GenericTest 0x000c4b15
> mono_method_lookup_or_register_other_info + 533
> 14 GenericTest 0x00008162
> mono_resolve_patch_target + 1698
> 15 GenericTest 0x000eba57
> mono_arch_patch_code +
> 87
> 16 GenericTest 0x0000bae5 mono_codegen +
> 1269
> 17 GenericTest 0x0000df37
> mini_method_compile +
> 8167
> 18 GenericTest 0x0000fbd6
> mono_jit_compile_method_with_opt + 1574
> 19 GenericTest 0x0001051a
> mono_jit_compile_method
> + 42
> 20 GenericTest 0x001bc07e
> mono_compile_method + 73
> 21 GenericTest 0x000bb760
> common_call_trampoline +
> 512
> 22 ??? 0x00425066 0x0 + 4345958
> 23 ??? 0x056c8eca 0x0 + 91000522
> 24 ??? 0x056c8e1f 0x0 + 91000351
> 25 ??? 0x056c8d02 0x0 + 91000066
> 26 ??? 0x056c6c88 0x0 + 90991752
> 27 ??? 0x056c6c50 0x0 + 90991696
> 28 ??? 0x056c4850 0x0 + 90982480
> 29 ??? 0x056c45f4 0x0 + 90981876
> 30 ??? 0x056c3560 0x0 + 90977632
> 31 ??? 0x056c4598 0x0 + 90981784
> 32 ??? 0x056c3135 0x0 + 90976565
> 33 GenericTest 0x00010624
> mono_jit_runtime_invoke
> + 164
> 34 GenericTest 0x001c1032
> mono_runtime_invoke +
> 137
> 35 GenericTest 0x001c40f6
> mono_runtime_invoke_array + 1831
> 36 GenericTest 0x00154f6f
> ves_icall_InternalInvoke
> + 1163
> 37 ??? 0x052a6de8 0x0 + 86666728
> 38 ??? 0x052a6b98 0x0 + 86666136
> 39 ??? 0x052a6a4b 0x0 + 86665803
> 40 ??? 0x052a5ff4 0x0 + 86663156
> 41 ??? 0x023d914c 0x0 + 37589324
> 42 mobjc-glue.dylib 0x02a68dd5 Thunk + 37
> 43 libffi.dylib 0x95857b9f
> ffi_closure_SYSV_inner +
> 177
> 44 libffi.dylib 0x958579c2 ffi_closure_SYSV
> + 34
> 45 AppKit 0x96d6fcf8 -[NSWindow
> sendEvent:] +
> 5693
> 46 AppKit 0x96c88817 -[NSApplication
> sendEvent:] + 6431
> 47 AppKit 0x96c1c2a7 -[NSApplication
> run] +
> 917
> 48 AppKit 0x96c142d9 NSApplicationMain
> + 574
> 49 ??? 0x052b82b0 0x0 + 86737584
> 50 ??? 0x052b81f8 0x0 + 86737400
> 51 ??? 0x004aedf8 0x0 + 4910584
> 52 ??? 0x004aeecf 0x0 + 4910799
> 53 GenericTest 0x00010624
> mono_jit_runtime_invoke
> + 164
> 54 GenericTest 0x001c1032
> mono_runtime_invoke +
> 137
> 55 GenericTest 0x001c3940
> mono_runtime_exec_main +
> 669
> 56 GenericTest 0x001c2c7a
> mono_runtime_run_main +
> 843
> 57 GenericTest 0x0008943d mono_main + 7773
> 58 GenericTest 0x00002db5 start + 53
>
>
> --
> View this message in context:
> http://mono.1490590.n4.nabble.com/Generic-method-failing-at-mini-generic-sharing-c-407-condition-oti-data-not-met-tp3858093p3858093.html
> Sent from the Mono - OSX mailing list archive at Nabble.com.
> _______________________________________________
> Mono-osx mailing list
> Mono-osx at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-osx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-osx/attachments/20110929/7dce125b/attachment-0001.html
More information about the Mono-osx
mailing list