CorePlot MonoMac bindings crashing - mono

I am trying to use the CorePlot 0.9 binding for monomac, but that seems to be a hard task. The monotouch sample builds and runs without any problems, but I don't need that one.
Since only a CorePlotiOS.dll was present in the binding, I had to build one for osx myself, but first of af all, no bmake.exe was present, so I had to download the monomac source and build it myself first. Then I tried to build the CorePlotOSX.dll but that caused some compilation problems. Looking at the build-script for mono touch I tried with this line instead:
MONO_PATH=$(MONOMAC)/src mono $(MONOMAC)/src/bmac.exe -e -unsafe coreplot.cs -s=enums.cs -x=extras.cs -x=AssemblyInfo.cs --sourceonly=list --tmpdir=osx -r:System.Drawing -r:MonoMac -lib:$(MONOMAC)/src -baselib:$(MONOMAC)/src/MonoMac.dll .
Anything wrong there?
I have reduced the problem to this:
graph = new CPTPieChart();
graph.Title = "Test";
The allocation seems to survive, but whenever I try to access the object, I crash:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000bf887fac
VM Regions Near 0xbf887fac:
Stack 00000000b038d000-00000000b040e000 [ 516K] rw-/rwx SM=COW
--> Stack 00000000bc088000-00000000bf888000 [ 56.0M] ---/rwx SM=NUL
Stack 00000000bf888000-00000000c0088000 [ 8192K] rw-/rwx SM=COW
Application Specific Information:
objc[17645]: garbage collection is OFF
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.CoreFoundation 0x97c8aebc __CFStringEncodeByteStream + 12
1 com.apple.Foundation 0x9ac8ed49 -[NSString(NSStringOtherEncodings) getBytes:maxLength:usedLength:encoding:options:range:remainingRange:] + 263
2 com.apple.Foundation 0x9ac8e8ee bytesInEncoding + 213
3 com.apple.Foundation 0x9ac8e814 -[NSString(NSStringOtherEncodings) UTF8String] + 42
4 com.apple.CoreFoundation 0x97ce478c -[__NSCFString UTF8String] + 204
5 ??? 0x00f91208 0 + 16323080
6 ??? 0x030d708c 0 + 51212428
7 ??? 0x030d703c 0 + 51212348
8 ??? 0x016877d4 0 + 23623636
Any ideas? Running Mac OSX 10.7.5 btw.

Ok, that was hard. After several days of fighting xcode and monomac, it turned out, that the native CorePlot framework (dynamic lib) was not loaded. I was not aware, that I was supposed to load it myself (I am a monomac newbie, sorry...but isn't it rather ugly it fails silently in that way??)
Two ways to do this: either
Dlfcn.dlopen ("CorePlot.framework/CorePlot", 2); // 2 = load now, 0 = lazy load
or [assembly:MonoMac.RequiredFramework("CorePlot.framework/CorePlot")]

Related

Custom macOS login Plugin crashes on Catalina ("not in immutable memory")

I am using the Apple NameAndPassword Xcode example to customize the macOS login experience. My goal is authenticate a user against Active Directory. I am using the NameAndPassword example as a jumping board to understanding the macOS login process. I don't particularly need a custom UI, but from looking at several threads, the example can also work with PAM authentication.
I am running the NameAndPassword plugin which I built on Catalina. I am performing local code signing. When I log out, the loginwindow app should call the invoke method of my plugin and show a custom SFAuthorizationView, which does not appear. I see the following error in the system.log...
Jan 24 11:20:48 Kolyas-Mac SecurityAgentHelper[890]: objc[890]: CLASS: class 'EXAuthorizationPlugin' 0x104fb7d58 small method list 0x104fb1ec8 is not in immutable memory
Jan 24 11:20:48 Kolyas-Mac com.apple.xpc.launchd[1] (com.apple.security.agent.login.00000000-0000-0000-0000-0000000186E3[883]): Service exited due to SIGILL | sent by exc handler[883]
and see that the SecurityAgentHelper crashes with the following...
Application Specific Information:
dyld3 mode
CLASS: class 'EXAuthorizationPlugin' 0x104fb7d58 small method list 0x104fb1ec8 is not in immutable memory
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff6d368ad6 __abort_with_payload + 10
1 libsystem_kernel.dylib 0x00007fff6d36a3df abort_with_payload_wrapper_internal + 80
2 libsystem_kernel.dylib 0x00007fff6d36a38f abort_with_reason + 19
3 libobjc.A.dylib 0x00007fff6c070820 _objc_fatalv(unsigned long long, unsigned long long, char const*, __va_list_tag*) + 114
4 libobjc.A.dylib 0x00007fff6c0707ae _objc_fatal(char const*, ...) + 135
5 libobjc.A.dylib 0x00007fff6c063e13 realizeClassWithoutSwift(objc_class*, objc_class*) + 2184
6 libobjc.A.dylib 0x00007fff6c0636a0 realizeClassWithoutSwift(objc_class*, objc_class*) + 277
7 libobjc.A.dylib 0x00007fff6c0634bb realizeClassMaybeSwiftMaybeRelock(objc_class*, mutex_tt<false>&, bool) + 317
8 libobjc.A.dylib 0x00007fff6c062ff4 initializeAndMaybeRelock(objc_class*, objc_object*, mutex_tt<false>&, bool) + 104
9 libobjc.A.dylib 0x00007fff6c053d45 lookUpImpOrForward + 1072
10 libobjc.A.dylib 0x00007fff6c053399 _objc_msgSend_uncached + 73
11 com.apple.securityAgentPlugin.NameAndPassword 0x0000000104faee74 AuthorizationPluginCreate + 148 (main.m:66)
Any suggestions on how to resolve this error? Would this be a compiler issue? Maybe a directive for memory?
This is the offending code:
OSStatus AuthorizationPluginCreate(const AuthorizationCallbacks *callbacks,
AuthorizationPluginRef *outPlugin,
const AuthorizationPluginInterface **outPluginInterface)
{
os_log_with_type(OS_LOG_DEFAULT, OS_LOG_TYPE_DEBUG, "AuthorizationPluginCreate");
*outPlugin = [[EXAuthPlugin alloc] initWithCallbacks:callbacks pluginInterface:outPluginInterface];
return noErr;
}
I got the same error when porting my iPad app to Mac using Catalyst. My app needed access to AppKit specific methods, and I added a bundle plugin following this guide. The program worked fine on my MacBook Air M1 running Monterey, but crashed on my 2012 MacBook Pro running Catalina with the error:
CLASS: class 'AppKitBridge.AppKitBridge' 0x11668c388 small method list
0x116687508 is not in immutable memory
After I changed the bundle identifier in the plugin bundle from $(PRODUCT_BUNDLE_IDENTIFIER).AppKitBridge to $(PRODUCT_BUNDLE_IDENTIFIER), and set the plugins deployment target to 10.15, the problem went away.

Xcode 6.3.1 crashes when opening existing project

I updated Xcode to the latest version via the App Store, as it normal.
I am unable to open any existing project.
I have deleted all Derived Data and have restarted my laptop. Still crashing. And, I have no 3rd party plug ins.
I am including most of the dump. Didn't include the binary images data.
It appears that it might be related to the interface builder. The one app that I want to open, has the Storyboard as the foremost tab.
Thanks for any help in solving this.
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Application Specific Information:
ProductBuildVersion: 6D1002
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilder/IDEInterfaceBuilder-7702/Foundation/Utilities/IBFoundationAdditions.m:3148
Details: No object for "NSFont" key.
Object: <NSDictionary>
Method: +ib_strictDictionaryWithKeysAndObjects:
Thread: <NSThread: 0x7ffa00c39650>{number = 1, name = main}
Hints: None
Backtrace:
0 0x000000010520cbfa -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:message Format:arguments:] (in IDEKit)
1 0x0000000103f6ab9f _DVTAssertionHandler (in DVTFoundation)
2 0x0000000103f6ae8e _DVTAssertionFailureHandler (in DVTFoundation)
3 0x000000010b307ab6 +[NSDictionary(IBDictionaryAdditions) ib_strictDictionaryWithKeysAndObjects:] (in IBFoundation)
4 0x000000010fb0e22f IBTextAttributesWithFontColorShadowAndAlignment (in IDEInterfaceBuilderKit)
5 0x000000010fb0e000 __48+[IBViewControllerPlaceholderStyle defaultStyle]_block_invoke (in IDEInterfaceBuilderKit)
6 0x00007fff8d1adc13 _dispatch_client_callout (in libdispatch.dylib)
7 0x00007fff8d1adb26 dispatch_once_f (in libdispatch.dylib)
8 0x000000010fb0dd8e +[IBViewControllerPlaceholderStyle defaultStyle] (in IDEInterfaceBuilderKit)
9 0x000000010fb0e458 IBDrawViewPlaceholder (in IDEInterfaceBuilderKit)
10 0x00000001141e23f9 (in IDEInterfaceBuilderCocoaTouchIntegration)
I fixed this by fixing another issue. OS X app store kept crashing on installation of 10.10. Solved it by downloading 10.10 from Apple directly.
Then, the issue with Xcode just simply went away! And, now app store app works right. Must have been some corruption in the app store itself.

where to look for a bug. document, app delegate or both?

following situation: i have a document based App. by default when i open the app it displays just the menu on top of the screen. then i hit file->new and it opens up a brand new document.xib interface. working fine on my main pc. but on my secodnary pc running 10.6.8 the app crashes as soon as i run it. (code is compiled with the proper target...)
this application is crashing BEFORE i even see the main menu at the top. could the cause of the crash still be inside the document's xib file? or will it most likely be in the code that is outside the document part? what i mean is: is the code checked completely at the application lounch or does it onyl cause a crash when it reaches the code that is causing it?
thanks
edit
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 ??? 000000000000000000 0 + 0
1 com.apple.AppKit 0x0000000100def22e -[NSCustomObject nibInstantiate] + 416
2 com.apple.AppKit 0x0000000100def01b -[NSIBObjectData instantiateObject:] + 259
3 com.apple.AppKit 0x0000000100dee406 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 336
4 com.apple.AppKit 0x0000000100deca91 loadNib + 226
5 com.apple.AppKit 0x0000000100debfa1 +[NSBundle(NSNibLoading)_loadNibFile:nameTable:withZone:ownerBundle:] + 248
6 com.apple.AppKit 0x0000000100debdd9 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 326
7 com.apple.AppKit 0x0000000100de935b NSApplicationMain + 279
8 mad-sharky.com.Stockuploader 0x0000000100001194 0x100000000 + 4500
The problem lies not in the XIB file, but rather in one of the objects in said file that is being instantiated incorrectly. Something about the object is causing it's -initWithCoder: method to fail. It appears you're probably not calling through to super in said method, and are simply returning self, which is not allowed.
The other possibility is that you have a "ghost outlet". Sometimes, when an IBOutlet is created and linked, then the piece of code that declares it is removed, IB doesn't de-link the outlet, and NSCoder tries to dearchive a nil outlet.
found the problem. here it is:
now it works without any problems!

Aperture Plug-in crashes with EXC_BAD_ACCESS

I try to run the SampleFTPExportPlugIn that comes with the Aperture SDK 2.1. I had to tweak the Base SDK setting and manually copy the PluginManager.Framework folder to /Library/Frameworks, as described here.
All compiles and Aperture 3.2.3 now offers the menu item File/Export/FTP.
When selecting the "FTP" export method and thus triggering the plug-in code, Aperture crashes with a EXC_BAD_ACCESS. The illegal memory access happens in the initWithAPIManager method of class SampleFTPExportPlugIn when trying to get a reference to the ApertureExportManager:
_exportManager = [[_apiManager apiForProtocol:#protocol(ApertureExportManager)] retain];
This is the second line that gets executed after Aperture hands over control to the plug-in and seems to be the standard way of getting a reference to the ApertureExportManager in any Aperture plug-in (I haven't found any alternative ways of achieving the same anywhere).
Here the stacktrace:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000
VM Regions Near 0:
-->
__TEXT 0000000100000000-0000000100798000 [ 7776K] r-x/rwx SM=COW /Applications/Aperture.app/Contents/MacOS/Aperture
Application Specific Information:
objc_msgSend() selector name: class
objc[3000]: garbage collection is OFF
Performing #selector(a_exportPlugIn:) from sender NSMenuItem 0x111d2a540
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff8711c090 objc_msgSend_vtable2 + 16
1 com.apple.CoreFoundation 0x00007fff8381e25f -[__NSCFString isEqualToString:] + 63
2 com.apple.PluginManager 0x0000000101211218 -[PROBundleHandler apiForProtocol:] + 109
3 com.apple.CoreFoundation 0x00007fff83852f4c __invoking___ + 140
4 com.apple.CoreFoundation 0x00007fff83852de4 -[NSInvocation invoke] + 132
5 com.apple.CoreFoundation 0x00007fff83852fb4 -[NSInvocation invokeWithTarget:] + 52
6 com.apple.CoreFoundation 0x00007fff8384dff4 ___forwarding___ + 756
7 com.apple.CoreFoundation 0x00007fff8384dc88 _CF_forwarding_prep_0 + 232
8 com.apple.SampleFTPExportPlugIn 0x000000012c0d5361 -[SampleFTPExportPlugIn initWithAPIManager:] + 209
9 com.apple.PluginManager 0x000000010120c6fa -[PROConcretePlugIn plugInInstance] + 212
I read all about Objective-C memory management but cannot make sense of it. All the other examples I found on the web are implemented just like that so I guess I have a compatibility problem, something missing in my Aperture / Library installation. How can I narrow down the problem?
EDIT:
The problem seems to be with the passed in apiManager. The method signature is:
- (id)initWithAPIManager:(id<PROAPIAccessing>)apiManager
The parameter is then assigned to our internal reference:
_apiManager = apiManager;
However the actual class passed in is PROPlugInFirewall, as this output reviels:
NSLog(#"_apiManager class is: %#", [[_apiManager class] description]);
Then calling the respondsToSelector leads to the same crash although this method is inherited from NSObject.
if ( [_apiManager respondsToSelector:#selector(apiForProtocol:)] ) {
NSLog(#"responds");
}
The _apiManager itself describes itself as:
_apiManager is: <[*<PROBundleHandler: 0x14d79130> (PROAPIAccessing)*]>
Still stuck...
EDIT:
So it looks like Aperture is passing in a pointer that points to nirvana... However, I just installed another plugin, from the Apple webpage, with installer and everything. That one failed too when invoked...
Download FXPlug 1.2.5 SDK
Open the contents of the installer package
Copy PluginManager.framework to /Library/Frameworks
Your plugin should work now!
The newer versions of PluginManager.framework in FXPlug SDK(2.2/2.4) will cause this crash.
Tested on 10.8 with Xcode 4.5
I found that Justin's answer above didn't work for me when needing to build for Aperture 3.4, as it requires x86_64 architecture which the FXPlug 1.x versions don't support.
After trying various versions of the PluginManager framework, I found that the version available here doesn't cause the above crash and also contains the valid 64-bit architecture. Just replace the contents of /Library/Frameworks/PluginManager.framework/Versions/B with the contents of the linked archive and you're good to go.

Strange Crash issue as:- Dispatch queue: com.apple.root.default-overcommit-priority

I am developing an application in which a lot of operations are added in ASINetworkQueue.The operations are basically used for fetching the image from server and then in successful completion set the image in table view cell.
Everything is happening fine.I have a button a table view cell on which another view controller gets opened.
On that another view there is a cross button on which I pop that view controller.
Now when the cross button gets clicked sometimes the app gets crashed there, sometimes it gets crashes when comes back to the previous view and scrolling my table view.
When I see the crash logs I found that the following code comes in whatever the thread crashed.Sometime it is crashed thread2 ,sometime it is crashed thread 12, sometime it is crashed thread 6 but the code inside that thread is same which is shown below.
Thread 11 name: Dispatch queue: com.apple.root.default-overcommit-priority
Thread 11 Crashed:
0 Foundation 0x357320b2 0x3569e000 + 606386
1 Foundation 0x356add56 0x3569e000 + 64854
2 Foundation 0x356adb94 0x3569e000 + 64404
3 Foundation 0x35731f48 0x3569e000 + 606024
4 Foundation 0x356add56 0x3569e000 + 64854
5 Foundation 0x356adb94 0x3569e000 + 64404
6 Foundation 0x35731ebc 0x3569e000 + 605884
7 libdispatch.dylib 0x3698c9f6 0x36981000 + 47606
8 libdispatch.dylib 0x3698f21e 0x36981000 + 57886
9 libdispatch.dylib 0x3698cb70 0x36981000 + 47984
10 libdispatch.dylib 0x3698d76c 0x36981000 + 51052
11 libsystem_c.dylib 0x32af91c8 0x32aef000 + 41416
12 libsystem_c.dylib 0x32af909c 0x32aef000 + 41116
I am stuck here as the crash log is not getting symolicated also and also it is happening on some devices not on every device.
Please suggest me how to solve this strange crash issue.
Any suggestions would be highly appreciated.
Thanks in advance.Please Please help me.
I cannot talk to the exact technical reason that this is happening, but I had this error today. It occurred only on iPad 1 and it turned out to be related to trying to scale a huge image (which I thought was smaller). Reducing the size of the image removed the com.apple.root.default-overcommit-priority error.
So it's probably memory related (particularly low memory).