Associated type subclassing in monaural mode

I have a problem when I subclass a type that binds the obj-C type. In some cases, it does not work during construction.

I can reproduce this right now with the cocos2d and CCSprite bindings. Here's my subclass

public class MySprite : CCSprite
{
    public MySprite (string filename) : base (filename)
    {}
}

      

When I create it, it fails:

Stacktrace:

  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSendSuper_IntPtr (intptr,intptr,intptr) <IL 0x00025, 0xffffffff>
  at MonoTouch.Cocos2D.CCSprite.set_Texture (MonoTouch.Cocos2D.CCTexture2D) <IL 0x00048, 0x00137>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <IL 0x00052, 0xffffffff>
  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.IntPtr_objc_msgSendSuper_IntPtr (intptr,intptr,intptr) <IL 0x00027, 0xffffffff>
  at MonoTouch.Cocos2D.CCSprite..ctor (string) <IL 0x00072, 0x001a3>
  at Demo.MySprite..ctor (string) <IL 0x00002, 0x00027>
 [...]

Native stacktrace:

    0   Demo                       0x00115b5c mono_handle_native_sigsegv + 284
1   Demo                       0x00089c38 mono_sigsegv_signal_handler + 248
2   libsystem_c.dylib                   0x962af86b _sigtramp + 43
3   ???                                 0xffffffff 0x0 + 4294967295
4   Demo                       0x0003b9d2 -[CCSprite setOpacityModifyRGB:] + 47
5   Demo                       0x0003c18c -[CCSprite updateBlendFunc] + 267
6   Demo                       0x0003c37c -[CCSprite setTexture:] + 488
7   ???                                 0x11cadc94 0x0 + 298507412
8   ???                                 0x11cada78 0x0 + 298506872
9   ???                                 0x11cadbf6 0x0 + 298507254
10  Demo                       0x0008dff2 mono_jit_runtime_invoke + 722
11  Demo                       0x001f0b7e mono_runtime_invoke + 126
12  Demo                       0x00293736 monotouch_trampoline + 3686
13  Demo                       0x0003909e -[CCSprite initWithTexture:rect:rotated:] + 614
14  Demo                       0x0003914d -[CCSprite initWithTexture:rect:] + 70
15  Demo                       0x0003934c -[CCSprite initWithFile:] + 275
16  ???                                 0x11cad803 0x0 + 298506243
17  ???                                 0x11cad6ec 0x0 + 298505964
18  ???                                 0x11cace30 0x0 + 298503728
19  ???                                 0x11cac958 0x0 + 298502488
20  ???                                 0x11ca7f04 0x0 + 298483460
21  ???                                 0x0d7f7258 0x0 + 226456152
22  ???                                 0x0d7f0a7c 0x0 + 226429564
23  ???                                 0x0d7f0dc5 0x0 + 226430405
24  Demo                       0x0008dff2 mono_jit_runtime_invoke + 722
25  Demo                       0x001f0b7e mono_runtime_invoke + 126
26  Demo                       0x00293736 monotouch_trampoline + 3686
27  UIKit                      0x016c59d6 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1292
28  UIKit                      0x016c68a6 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 508
29  UIKit                      0x016d5743 -[UIApplication handleEvent:withNewEvent:] + 1027
30  UIKit                      0x016d61f8 -[UIApplication sendEvent:] + 68
31  UIKit                      0x016c9aa9 _UIApplicationHandleEvent + 8196
32  GraphicsServices           0x042bafa9 PurpleEventCallback + 1274
33  CoreFoundation             0x037231c5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
34  CoreFoundation             0x03688022 __CFRunLoopDoSource1 + 146
35  CoreFoundation             0x0368690a __CFRunLoopRun + 2218
36  CoreFoundation             0x03685db4 CFRunLoopRunSpecific + 212
37  CoreFoundation             0x03685ccb CFRunLoopRunInMode + 123
38  UIKit                      0x016c62a7 -[UIApplication _run] + 576
39  UIKit                      0x016c7a9b UIApplicationMain + 1175
40  ???                        0x0d7ebbc5 0x0 + 226409413
41  ???                        0x0d7e5020 0x0 + 226381856
42  ???                        0x0d7e4390 0x0 + 226378640
43  ???                        0x0d7e44e6 0x0 + 226378982
44  Demo                       0x0008dff2 mono_jit_runtime_invoke + 722
45  Demo                       0x001f0b7e mono_runtime_invoke + 126
46  Demo                       0x001f4d74 mono_runtime_exec_main + 420
47  Demo                       0x001fa165 mono_runtime_run_main + 725
48  Demo                       0x000eb4d5 mono_jit_exec + 149
49  Demo                       0x002889f5 main + 2005
50  Demo                       0x00086f81 start + 53

      

My concern is that I have similar code working in another application.

And to be complete, if I override the Texture property for the proxy to base, it no longer crashes but displays nothing, so I suspect the native object is in bad shape.

I also tried [Registering] the class and adding a default constructor override.

[UPDATE] I was comparing this project to another that worked. In fact, both work on the device, and both don't work the same in the simulator.

[UPDATE2] here's an example triggering the behavior: https://github.com/StephaneDelcroix/mt-subclassbug Cocos2D.dll

is a new one generated this morning frommonotouch-bindings

master

+3


source to share


1 answer


Answering my question. The bug is not in the definition of the bindings, nor in the tools used to create them, but in version 2.1rc0 of cocos2d. upgrade to 2.1rc0a fixed.



This then brings up a new issue, but it can be traced back to the bindings being defined and fixed here https://github.com/mono/monotouch-bindings/pull/97

+1


source







All Articles