How to use wxTreeItemData without crashing upon deletion - c++

I'm using wxWidgets, and I have a wxTreeCtrl set up with a root and a single child. I'm setting client data on the child and it works fine until the window closes, at which point I get a bus error, which I'm assuming is coming from wxWidgets attempting to delete my client data.
Here's my client data struct:
struct MapPtrCtr {
Map* map;
MapPtrCtr(Map* map) : map(map) {}
};
Here's how I set the client data (note that here, map is std::shared_ptr<Map>):
wxTreeItemId childNode = mapTree->AppendItem(node, map->getTitle());
mapTree->SetItemData(childNode, (wxTreeItemData*) new MapPtrCtr(map.get()));
Here's the error I get:
Process: AromatherapyMapEditor [43832]
Path: /Users/USER/*/AromatherapyMapEditor
Identifier: AromatherapyMapEditor
Version: 0
Code Type: X86-64 (Native)
Parent Process: bash [805]
Responsible: Terminal [798]
User ID: 501
Date/Time: 2015-03-16 13:38:02.964 -0400
OS Version: Mac OS X 10.10.1 (14B25)
Report Version: 11
Anonymous UUID: 3887BB6D-7783-EBA5-C86C-FACE1C21094E
Sleep/Wake UUID: 9C9670EA-BBC7-4046-B544-F1CE3F184398
Time Awake Since Boot: 84000 seconds
Time Since Wake: 12000 seconds
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fb920f1ae80
VM Regions Near 0x7fb920f1ae80:
MALLOC_TINY 00007fb920d00000-00007fb920f00000 [ 2048K] rw-/rwx SM=PRV
--> MALLOC_TINY 00007fb920f00000-00007fb921000000 [ 1024K] rw-/rwx SM=COW
MALLOC_SMALL 00007fb921000000-00007fb921800000 [ 8192K] rw-/rwx SM=COW
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 ??? 0x00007fb920f1ae80 0 + 140433098387072
1 libwx_osx_cocoau_core-3.0.dylib 0x00000001075f6a26 wxGenericTreeItem::DeleteChildren(wxGenericTreeCtrl*) + 94
2 libwx_osx_cocoau_core-3.0.dylib 0x00000001075fabe2 wxGenericTreeCtrl::Delete(wxTreeItemId const&) + 264
3 libwx_osx_cocoau_core-3.0.dylib 0x00000001075fac64 wxGenericTreeCtrl::DeleteAllItems() + 40
4 libwx_osx_cocoau_core-3.0.dylib 0x00000001075f925c wxGenericTreeCtrl::~wxGenericTreeCtrl() + 102
5 libwx_osx_cocoau_core-3.0.dylib 0x000000010759f96b wxTreeCtrl::~wxTreeCtrl() + 15
6 libwx_osx_cocoau_core-3.0.dylib 0x00000001075a5da0 wxWindowBase::Destroy() + 40
7 libwx_osx_cocoau_core-3.0.dylib 0x00000001075a5e96 wxWindowBase::DestroyChildren() + 20
8 libwx_osx_cocoau_core-3.0.dylib 0x0000000107438d79 wxWindow::~wxWindow() + 215
9 libwx_osx_cocoau_core-3.0.dylib 0x00000001075effeb wxSplitterWindow::~wxSplitterWindow() + 15
10 libwx_osx_cocoau_core-3.0.dylib 0x00000001075a5da0 wxWindowBase::Destroy() + 40
11 libwx_osx_cocoau_core-3.0.dylib 0x00000001075a5e96 wxWindowBase::DestroyChildren() + 20
12 libwx_osx_cocoau_core-3.0.dylib 0x0000000107435121 wxNonOwnedWindow::~wxNonOwnedWindow() + 45
13 AromatherapyMapEditor 0x000000010739f913 MapeditFrame::~MapeditFrame() + 259 (frame.h:24)
14 AromatherapyMapEditor 0x000000010739e1f5 MapeditFrame::~MapeditFrame() + 21 (frame.h:24)
15 AromatherapyMapEditor 0x000000010739e219 MapeditFrame::~MapeditFrame() + 25 (frame.h:24)
16 libwx_baseu-3.0.dylib 0x000000010795ec72 wxAppConsoleBase::DeletePendingObjects() + 74
17 libwx_baseu-3.0.dylib 0x000000010795ebd3 wxAppConsoleBase::ProcessIdle() + 85
18 libwx_osx_cocoau_core-3.0.dylib 0x00000001074dcef6 wxAppBase::ProcessIdle() + 22
19 libwx_osx_cocoau_core-3.0.dylib 0x000000010746be5a wxApp::ProcessIdle() + 26
20 libwx_baseu-3.0.dylib 0x0000000107984faa wxEventLoopBase::ProcessIdle() + 28
21 libwx_baseu-3.0.dylib 0x0000000107a0d661 wxCFEventLoop::CommonModeObserverCallBack(__CFRunLoopObserver*, int) + 69
22 com.apple.CoreFoundation 0x00007fff8db02d87 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
23 com.apple.CoreFoundation 0x00007fff8db02ce0 __CFRunLoopDoObservers + 368
24 com.apple.CoreFoundation 0x00007fff8daf4f1a __CFRunLoopRun + 1178
25 com.apple.CoreFoundation 0x00007fff8daf4838 CFRunLoopRunSpecific + 296
26 com.apple.HIToolbox 0x00007fff926dd43f RunCurrentEventLoopInMode + 235
27 com.apple.HIToolbox 0x00007fff926dd1ba ReceiveNextEventCommon + 431
28 com.apple.HIToolbox 0x00007fff926dcffb _BlockUntilNextEventMatchingListInModeWithFilter + 71
29 com.apple.AppKit 0x00007fff8b6906d1 _DPSNextEvent + 964
30 com.apple.AppKit 0x00007fff8b68fe80 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 194
31 com.apple.AppKit 0x00007fff8b683e23 -[NSApplication run] + 594
32 libwx_osx_cocoau_core-3.0.dylib 0x00000001074bdd8c wxGUIEventLoop::OSXDoRun() + 106
33 libwx_baseu-3.0.dylib 0x0000000107a0db35 wxCFEventLoop::DoRun() + 39
34 libwx_baseu-3.0.dylib 0x0000000107984ed8 wxEventLoopBase::Run() + 88
35 libwx_baseu-3.0.dylib 0x000000010795ea04 wxAppConsoleBase::MainLoop() + 128
36 libwx_osx_cocoau_core-3.0.dylib 0x000000010746bea8 wxApp::OnRun() + 26
37 libwx_baseu-3.0.dylib 0x00000001079b33ae wxEntry(int&, wchar_t**) + 71
38 AromatherapyMapEditor 0x000000010738d706 main + 38 (main.cpp:15)
39 libdyld.dylib 0x00007fff916bf5c9 start + 1
Any suggestions? I'm not sure how to properly use wxTreeItemData because there's very little documentation on it. The docs say to make sure to initialize the struct with new, and I do, so I'm not sure why there's a problem.

That was quick. I figured out how to properly use wxTreeItemData: you have to subclass it, not just cast to it. The following client data class works:
class MapPtrCtr : public wxTreeItemData {
public:
Map* map;
MapPtrCtr(Map* map) : map(map) {}
};

Related

SwiftUI crash AttributeGraph precondition failure: invalid attribute id: 83753

I got this (not particularly helpful, in my eyes) crash message and was wondered what the usual suspect was for this/where I'm best to look? I'm getting this when I navigate using a NavigationLink to another View. I know from some research that this crash tends to have a different cause each time, but I wondered if the stack trace would give any clues?
Each crash companies about the same invalid attribute id: 83753. Any way I can track something down using this ID?
Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x1c1f2584c __pthread_kill + 8
1 libsystem_pthread.dylib 0x1de7f09e8 pthread_kill + 212
2 libsystem_c.dylib 0x19ed5c8f4 abort + 100
3 AttributeGraph 0x1bd82dc7c util::Heap::Heap(void*, unsigned long, unsigned long) + 186
4 AttributeGraph 0x1bd8269f0 AG::AttributeID::size() const + 238
5 AttributeGraph 0x1bd82d530 AGGraphGetValue + 500
6 SwiftUI 0x19c9e4eb0 ResolvedTextFilter.updateValue() + 56
7 SwiftUI 0x19c4cee34 partial apply for specialized implicit closure #2 in implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>(_:) + 20
8 AttributeGraph 0x1bd81714c AG::Graph::UpdateStack::update() + 484
9 AttributeGraph 0x1bd81755c AG::Graph::update_attribute(AG::data::ptr<AG::Node>, bool) + 328
10 AttributeGraph 0x1bd81c1f8 AG::Graph::value_ref(AG::AttributeID, AGSwiftMetadata const*, bool*) + 152
11 AttributeGraph 0x1bd82d468 AGGraphGetValue + 300
12 SwiftUI 0x19c6321d8 ViewGraph.sizeThatFits(_:) + 212
13 SwiftUI 0x19ca285e0 closure #1 in ViewRendererHost.sizeThatFits(_:) + 52
14 SwiftUI 0x19c5d2ec4 thunk for #callee_guaranteed (#guaranteed ViewGraph) -> (#unowned CGSize) + 24
15 SwiftUI 0x19ca2687c closure #1 in ViewRendererHost.updateViewGraph<A>(body:) + 92
16 SwiftUI 0x19ca1f0b4 ViewRendererHost.updateViewGraph<A>(body:) + 88
17 SwiftUI 0x19ca25328 ViewRendererHost.sizeThatFits(_:) + 112
18 SwiftUI 0x19cb7b980 _UIHostingView.sizeThatFits(_:) + 112
19 SwiftUI 0x19cb7b9c8 #objc _UIHostingView._baselineOffsets(at:) + 48
20 UIKitCore 0x197eadbb0 -[_UITAMICAdaptorView updateForAvailableSize] + 120
21 UIKitCore 0x197eadafc -[_UITAMICAdaptorView didMoveToWindow] + 60
22 UIKitCore 0x198dcdbc0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 2016
23 UIKitCore 0x198dcd680 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 672
24 UIKitCore 0x198dcd680 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 672
25 UIKitCore 0x197ed2350 -[UINavigationBar _didMoveFromWindow:toWindow:] + 64
26 UIKitCore 0x198dc1ac8 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 136
27 UIKitCore 0x198dc19b4 -[UIView(Hierarchy) _postMovedFromSuperview:] + 748
28 UIKitCore 0x198dd0028 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 2132
29 UIKitCore 0x1981385d8 -[UILayoutContainerView addSubview:] + 64
30 UIKitCore 0x1981434a0 -[UINavigationController _unhideNavigationBarForEdge:] + 100
31 UIKitCore 0x1981436e8 -[UINavigationController _setNavigationBarHidden:edge:duration:] + 216
32 UIKitCore 0x198142d30 -[UINavigationController _setNavigationBarHidden:edgeIfNotNavigating:duration:] + 516
33 UIKitCore 0x1981416ac -[UINavigationController setNavigationBarHidden:animated:] + 156
34 SwiftUI 0x19cadace8 NavigationBridge_PhoneTV.hostingControllerWillAppear(transitionCoordinator:animated:) + 876
35 SwiftUI 0x19c53fc60 _UIHostingView.viewControllerWillAppear(transitionCoordinator:animated:) + 48
36 SwiftUI 0x19cb7fd20 UIHostingController.viewWillAppear(_:) + 116
37 SwiftUI 0x19cb7fc3c #objc UIHostingController.viewWillAppear(_:) + 40
38 UIKitCore 0x198210a4c -[UIViewController _setViewAppearState:isAnimating:] + 604
39 UIKitCore 0x1982111d0 -[UIViewController __viewWillAppear:] + 116
40 UIKitCore 0x19813f7e8 -[UINavigationController _startCustomTransition:] + 1344
41 UIKitCore 0x198153bb0 -[UINavigationController _startDeferredTransitionIfNeeded:] + 700
42 UIKitCore 0x198154fe0 -[UINavigationController __viewWillLayoutSubviews] + 164
43 UIKitCore 0x198137e78 -[UILayoutContainerView layoutSubviews] + 224
44 UIKitCore 0x198dd6398 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2468
45 QuartzCore 0x1992dbdf4 -[CALayer layoutSublayers] + 288
46 QuartzCore 0x1992e2398 CA::Layer::layout_if_needed(CA::Transaction*) + 520
47 QuartzCore 0x1992ed6e8 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 140
48 QuartzCore 0x199238d7c CA::Context::commit_transaction(CA::Transaction*, double, double*) + 416
49 QuartzCore 0x199262f40 CA::Transaction::commit() + 728
50 QuartzCore 0x1992641f0 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 92
51 CoreFoundation 0x195fe087c __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
52 CoreFoundation 0x195fdaf50 __CFRunLoopDoObservers + 604
53 CoreFoundation 0x195fdb498 __CFRunLoopRun + 960
54 CoreFoundation 0x195fdaba0 CFRunLoopRunSpecific + 572
55 GraphicsServices 0x1acd43598 GSEventRunModal + 160
56 UIKitCore 0x1988cc2f4 -[UIApplication _run] + 1052
57 UIKitCore 0x1988d1874 UIApplicationMain + 164
58 SwiftUI 0x19ca5a5dc closure #1 in KitRendererCommon(_:) + 108
59 SwiftUI 0x19ca5a56c runApp<A>(_:) + 176
60 SwiftUI 0x19c62bd18 static App.main() + 96
61 ProgressioniOS 0x10077f06c static ProgressionApp.$main() (<compiler-generated>)
62 ProgressioniOS 0x10077f39c main (ProgressionApp.swift)
63 libdyld.dylib 0x195cb9568 start + 4
Any thoughts appreciated.

Swift: crash at non-existing line

Hey StackOverflow detectives.
I've been pulling my hair out for a few months trying to figure out the crashes which happen at a line never exists.
In the crash log below, CustomClass.swift does exist but the line 25 doesn't.
What would be the true reason for this crash?
Hint: we run heavy processing and allocate a lot of memory (about 700MB) in the background that was written in c++, which is in OUR_CUSTOM_FRAMEWORK below.
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001934c6df0 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001933e6930 pthread_kill + 228 (pthread.c:1458)
2 libsystem_c.dylib 0x0000000193374ba4 abort + 104 (abort.c:110)
3 libsystem_malloc.dylib 0x00000001933d7fdc malloc_vreport + 564 (malloc_printf.c:183)
4 libsystem_malloc.dylib 0x00000001933d81a4 malloc_report + 64 (malloc_printf.c:192)
5 libsystem_malloc.dylib 0x00000001933cbd1c free + 436 (malloc.c:1733)
6 [OUR_CUSTOM_FRAMEWORK] 0x000000010324ccf8 0x1031a4000 + 691448
7 libsystem_c.dylib 0x0000000193355164 __cxa_finalize_ranges + 416 (atexit.c:284)
8 libsystem_c.dylib 0x00000001933554a0 exit + 28 (exit.c:81)
9 UIKitCore 0x000000019782eb88 -[UIApplication _terminateWithStatus:] + 508 (UIApplication.m:6735)
10 UIKitCore 0x0000000196f97718 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 128 (_UISceneLifecycleMultiplexer.m:765)
11 UIKitCore 0x0000000196f9737c -[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 220 (_UISceneLifecycleMultiplexer.m:418)
12 UIKitCore 0x0000000197824ac4 -[UIApplication workspaceShouldExit:withTransitionContext:] + 216 (UIApplication.m:3725)
13 FrontBoardServices 0x000000019893bcf8 -[FBSUIApplicationWorkspaceShim workspaceShouldExit:withTransitionContext:] + 88 (FBSUIApplicationWorkspace.m:144)
14 FrontBoardServices 0x0000000198968d68 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke_2 + 80 (FBSWorkspaceScenesClient.m:281)
15 FrontBoardServices 0x000000019894debc -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240 (FBSWorkspace.m:357)
16 FrontBoardServices 0x0000000198968cf4 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke + 140 (FBSWorkspaceScenesClient.m:278)
17 libdispatch.dylib 0x000000019338033c _dispatch_client_callout + 20 (object.m:495)
18 libdispatch.dylib 0x00000001933830d4 _dispatch_block_invoke_direct + 264 (queue.c:466)
19 FrontBoardServices 0x000000019898f6c4 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48 (FBSSerialQueue.m:173)
20 FrontBoardServices 0x000000019898f370 -[FBSSerialQueue _queue_performNextIfPossible] + 432 (FBSSerialQueue.m:216)
21 FrontBoardServices 0x000000019898f8dc -[FBSSerialQueue _performNextFromRunLoopSource] + 32 (FBSSerialQueue.m:247)
22 CoreFoundation 0x000000019365baf4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1922)
23 CoreFoundation 0x000000019365ba48 __CFRunLoopDoSource0 + 84 (CFRunLoop.c:1956)
24 CoreFoundation 0x000000019365b198 __CFRunLoopDoSources0 + 196 (CFRunLoop.c:1992)
25 CoreFoundation 0x0000000193655f38 __CFRunLoopRun + 796 (CFRunLoop.c:2882)
26 CoreFoundation 0x00000001936558f4 CFRunLoopRunSpecific + 480 (CFRunLoop.c:3192)
27 GraphicsServices 0x000000019da6c604 GSEventRunModal + 164 (GSEvent.c:2246)
28 UIKitCore 0x0000000197829358 UIApplicationMain + 1944 (UIApplication.m:4823)
29 [APPNAME] 0x0000000100d45128 main + 68 (CustomClass.swift:25)
30 libdyld.dylib 0x00000001934d12dc start + 4

Qt5: Application crash on exit

I have a c++ program written in Qt5 5.14.1.
It also use privoxy source code inside.
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
abort() called
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff6b8e17fa __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff6b99ebc1 pthread_kill + 432
2 libsystem_c.dylib 0x00007fff6b868ab6 __abort + 139
3 libsystem_c.dylib 0x00007fff6b868a2b abort + 135
4 org.qt-project.QtCore 0x000000010b807de9 qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) + 9
5 org.qt-project.QtCore 0x000000010b809534 QMessageLogger::fatal(char const*, ...) const + 202
6 org.qt-project.QtCore 0x000000010b81060d QThread::~QThread() + 189
7 com.yourcompany.xxxxxxxx 0x00000001099cc935 PrivoxyThread::~PrivoxyThread() + 21 (privoxythread.cpp:17)
8 com.yourcompany.xxxxxxxx 0x00000001099cc955 PrivoxyThread::~PrivoxyThread() + 21 (privoxythread.cpp:17)
9 com.yourcompany.xxxxxxxx 0x00000001099cc979 PrivoxyThread::~PrivoxyThread() + 25 (privoxythread.cpp:15)
10 org.qt-project.QtCore 0x000000010ba0f394 QObjectPrivate::deleteChildren() + 228
11 org.qt-project.QtCore 0x000000010ba0f128 QObject::~QObject() + 2088
12 com.yourcompany.xxxxxxxx 0x00000001099e4598 Connection::~Connection() + 88 (connection.cpp:38)
13 com.yourcompany.xxxxxxxx 0x00000001099e4695 Connection::~Connection() + 21 (connection.cpp:38)
14 com.yourcompany.xxxxxxxx 0x00000001099e4819 Connection::~Connection() + 25 (connection.cpp:36)
15 org.qt-project.QtCore 0x000000010ba0f394 QObjectPrivate::deleteChildren() + 228
16 org.qt-project.QtCore 0x000000010ba0f128 QObject::~QObject() + 2088
17 com.yourcompany.xxxxxxxx 0x0000000109b9bd75 ConnectionItem::~ConnectionItem() + 21 (connectionitem.h:26)
18 com.yourcompany.xxxxxxxx 0x0000000109b9a0c5 ConnectionItem::~ConnectionItem() + 21 (connectionitem.h:26)
19 com.yourcompany.xxxxxxxx 0x0000000109b9a0e9 ConnectionItem::~ConnectionItem() + 25 (connectionitem.h:26)
20 org.qt-project.QtCore 0x000000010ba0f394 QObjectPrivate::deleteChildren() + 228
21 org.qt-project.QtCore 0x000000010ba0f128 QObject::~QObject() + 2088
22 com.yourcompany.xxxxxxxx 0x00000001099efe1d ConnectionTableModel::~ConnectionTableModel() + 61 (connectiontablemodel.cpp:8)
23 com.yourcompany.xxxxxxxx 0x00000001099efe65 ConnectionTableModel::~ConnectionTableModel() + 21 (connectiontablemodel.cpp:8)
24 com.yourcompany.xxxxxxxx 0x00000001099efe89 ConnectionTableModel::~ConnectionTableModel() + 25 (connectiontablemodel.cpp:8)
25 org.qt-project.QtCore 0x000000010ba0f394 QObjectPrivate::deleteChildren() + 228
26 org.qt-project.QtWidgets 0x000000010a9f7dae QWidget::~QWidget() + 1006
27 com.yourcompany.xxxxxxxx 0x0000000109a0c789 MainWindow::~MainWindow() + 409 (mainwindow.cpp:166)
28 com.yourcompany.xxxxxxxx 0x0000000109a0c825 MainWindow::~MainWindow() + 21 (mainwindow.cpp:166)
29 com.yourcompany.xxxxxxxx 0x00000001099fefcb main + 1339 (main.cpp:98)
30 libdyld.dylib 0x00007fff6b79a7fd start + 1
Each time I click quit, or Command + Q. It will quit and crash.
Is there a way to determine what cause the issue?
Apple Will pop a window when application crash, this is very annoying.

Troubleshooting a segmentation fault in Ember-cli

I just moved a working Ember-CLI project using Ember version 9 to version 11 and CLI from 0.1.15 to 0.2.2. After making all the necessary tweaking here and there though I now have an app that starts serving files but then immediately crashes with a Segmentation fault: 11. As far as I can see there are no logs anywhere and I'm at a loss on how to debug what is actually causing the fault.
Any help would be greatly appreciated.
A good way to gain insight into a segfault is to install ddobson's debugging tool found on github at: https://github.com/ddopson/node-segfault-handler.
You can install this with npm with:
npm install segfault-handler
Then just add the following two lines to your server/index.js file:
var segfaultHandler = require('segfault-handler');
segfaultHandler.registerHandler();
This will produce a stack trace for your node_modules which are dipping into native code (which is likely why you're getting the segfault).
In my case above the problem clearly stem from SASS compilation:
PID 30497 received SIGSEGV for address: 0x71
0 segfault-handler.node 0x00000001040f890f _ZL16segfault_handleriP9__siginfoPv + 287
1 libsystem_platform.dylib 0x00007fff90fd7f1a _sigtramp + 26
2 ??? 0x000000010141c6a0 0x0 + 4316055200
3 binding.node 0x00000001078a6fb3 _ZN4Sass6Parser16parse_expressionEv + 25
4 binding.node 0x00000001078a6e11 _ZN4Sass6Parser14parse_relationEv + 25
5 binding.node 0x00000001078a6bd1 _ZN4Sass6Parser17parse_conjunctionEv + 23
6 binding.node 0x00000001078a6aef _ZN4Sass6Parser17parse_disjunctionEv + 23
7 binding.node 0x00000001078a27b1 _ZN4Sass6Parser16parse_space_listEv + 23
8 binding.node 0x00000001078a2ccd _ZN4Sass6Parser14parse_argumentEv + 349
9 binding.node 0x00000001078a2a8a _ZN4Sass6Parser15parse_argumentsEv + 182
10 binding.node 0x00000001078a8a30 _ZN4Sass6Parser19parse_function_callEv + 186
11 binding.node 0x00000001078a7747 _ZN4Sass6Parser12parse_factorEv + 623
12 binding.node 0x00000001078a714d _ZN4Sass6Parser10parse_termEv + 25
13 binding.node 0x00000001078a6fb3 _ZN4Sass6Parser16parse_expressionEv + 25
14 binding.node 0x00000001078a6e11 _ZN4Sass6Parser14parse_relationEv + 25
15 binding.node 0x00000001078a6bd1 _ZN4Sass6Parser17parse_conjunctionEv + 23
16 binding.node 0x00000001078a6aef _ZN4Sass6Parser17parse_disjunctionEv + 23
17 binding.node 0x00000001078a27b1 _ZN4Sass6Parser16parse_space_listEv + 23
18 binding.node 0x00000001078a2ccd _ZN4Sass6Parser14parse_argumentEv + 349
19 binding.node 0x00000001078a2a8a _ZN4Sass6Parser15parse_argumentsEv + 182
20 binding.node 0x000000010789de19 _ZN4Sass6Parser16parse_mixin_callEv + 211
21 binding.node 0x00000001078a1949 _ZN4Sass6Parser11parse_blockEv + 1103
22 binding.node 0x000000010789f864 _ZN4Sass6Parser13parse_rulesetE18Selector_Lookahead + 174
23 binding.node 0x00000001078a1cfb _ZN4Sass6Parser11parse_blockEv + 2049
24 binding.node 0x000000010789f864 _ZN4Sass6Parser13parse_rulesetE18Selector_Lookahead + 174
25 binding.node 0x00000001078a1cfb _ZN4Sass6Parser11parse_blockEv + 2049
26 binding.node 0x000000010789f864 _ZN4Sass6Parser13parse_rulesetE18Selector_Lookahead + 174
27 binding.node 0x000000010789b98b _ZN4Sass6Parser5parseEv + 1651
28 binding.node 0x00000001078402c1 _ZN4Sass7Context10parse_fileEv + 375
29 binding.node 0x00000001078c1a69 _Z16sass_parse_blockP12Sass_ContextPN4Sass7ContextE + 162
30 binding.node 0x00000001078c144c _Z20sass_compile_contextP12Sass_ContextN4Sass7Context4DataE + 343
31 binding.node 0x00000001078c1715 sass_compile_file_context + 487
Abort trap: 6

Subclassing bound type in mono touch

I have an issue when I subclass a type which bind an obj-C type. In some cases, it fails at construction time.
I can reproduce this right now with the cocos2d bindings and CCSprite. Here's my subclass
public class MySprite : CCSprite
{
public MySprite (string filename) : base (filename)
{}
}
When I instantiate 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
What worries me is that I have similar code working in a different application.
And to be complete, if I override the Texture property to proxy to base, it doesn't crash anymore, but doesn't display anything so I suspect the native object is in bad shape.
I also tried [Register]ing the class, and adding the default constructor overrides.
[UPDATE] I compared this project with the other one that was working. In fact, both are working on device, and both fails the same way in the simulator.
[UPDATE2] here's a sample triggering the behaviour: https://github.com/StephaneDelcroix/mt-subclassbug The Cocos2D.dll is a fresh one generated this morning from monotouch-bindings master
Answering my own question. The bug was not in the bindings definition, nor in the tools used to generate them, but in the 2.1rc0 version of cocos2d. upgrading to 2.1rc0a fixed it.
This then triggers a new issue, but that one could be traced down to the bindings definition, and is fixed here https://github.com/mono/monotouch-bindings/pull/97