Error message '_BSMachError: (os/kern) invalid capability (20)'

IosObjective CXcode7

Ios Problem Overview


Please note that this error message is pretty low level, so it crops up for different reasons in different scenarios. If you have a scenario that isn't mentioned in one of the answers below, please consider adding your situation as well, so maybe this could be a central answer for various situations that raise this error message.

Edit Nov 10, 2015 Also note, I marked my own answer as the answer, but that was before anyone else had posted. I guess none should really be marked as the answer, because as we've now seen below... this error doesn't have just one answer because it's so low level.

I'm running

  • iOS 9.0 Simulator
  • XCode 7.0

Everything was working fine yesterday.

Today, after a bunch of work on rotation related stuff, I started getting this error in my console output when I run the app in the Simulator and I rotate it.

> _BSMachError: (os/kern) invalid capability (20) > > _BSMachError: (os/kern) invalid name (15)

Screenshot for this issue

  • I've cleared my build folder,
  • I've cleaned the derived data folder,
  • I've reset the simulator.

I was working with

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

I was also checking various 'Drawing' settings on the Attributes Inspector in IB.

I also made a utility category on UIView where I created a bunch of methods that create CGRect's and helps me assign frames to views.

Root View Controller

Root View Controller Settings

Ios Solutions


Solution 1 - Ios

Based on the https://forums.developer.apple.com/thread/15683:

Change "Localization native development region" in info.plist to United States instead of en.

Updated: Then you can revert these changes back.

Solution 2 - Ios

I also ran into the _BSMachError console errors while deep linking into the Settings app on iOS 9 from a UIAlertController action. A dispatch_async solved my problem:

[aAlertVC addAction:[UIAlertAction actionWithTitle:@"Settings" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
	dispatch_async(dispatch_get_main_queue(), ^{
		[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
	});
}]];

Solution 3 - Ios

Ok, I haven't pinned it down completely, but this will get you 99% of the way there. I'm using a third party map control from ESRI, and something about it doesn't like one of these drawing settings in the Attributes Inspector. I haven't tried each setting individually to see which setting it is, but when I turned all of them off (in the red box), everything worked like a charm, and I quit getting the error message above in the console. If and when I get time to nail it down to the precise setting or combination of settings, i'll update the answer.

enter image description here

Solution 4 - Ios

It's crazy but for me the solution was just to remove all breakpoints in the file where the error occured.

As for the cause? I think I accidentally hit a shortcut key to create a breakpoint in the current line. Because that was unintended I hit the same shortcut key again to delete it.

Oh my dear XCode...

Solution 5 - Ios

I was getting the same errors...

_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)

I was calling openURL() from a UIAlertAction

alert.addAction(UIAlertAction(title: actionTitle, style: .Default) {
    UIApplication.shared.openURL(url)
 }

Deferring execution of the block until the next run loop fixed it...

alert.addAction(UIAlertAction(title: actionTitle, style: .Default) {
    OperationQueue.main.addOperation {UIApplication.shared.openURL(url)}
 }

Solution 6 - Ios

I was getting the following when supplying new data:

> _BSMachError: (os/kern) invalid capability (20)
> _BSMachError: (os/kern) invalid name (15)

The error occurred when a button was used to supply new data. An NSTimer was used to refresh and update data upon returning from a performSegueWithIdentifier action. The timer was being activated and then invalidated immediately after use at return time. The MSMachError stopped when the timer was removed and - (void)viewWillAppear:(BOOL)animated and (void)viewDidAppear:(BOOL)animated were employed to perform the same function. This error started with upgrade to Xcode 7.

Solution 7 - Ios

I got this issue fixed by changing value of Localization native development region key to United Kingdom [or any Specific region] from its default value en present in info.plist of your project.

  1. Select Project Navigator
  2. Locate info.plist file present in ProjectNameTests folder.
  3. Change value of Localization native development region key to any specific region for eg. United Kingdom

Step 1 and 2

Step 3

Solution 8 - Ios

I also ran into the same problem in an NSOperation running on a background thread and I was still getting this error because a UIAlertController was still removing itself as another UI transaction was trying to take place. Modifying my code to this fixed the issue.

defer { 
    dispatch_async( dispatch_get_main_queue(),{
        completion()
    }) 
}

A lot of people don't know about defer -It lets the current scope complete and then runs after. Kinda neat.

Solution 9 - Ios

I did face the same error invalid capability (20) & invalid name (15). I tried the solutions as mentioned by others such as:

  • Localisation native development region key in info.plist
  • Changing drawing settings in the Attributes Inspector
  • Even altered ATS Exception Dictionary in info.plist

But none of those solutions solved my problem. Actually, I was trying to share some document but generating document would take some time and wanted to display an UIActivityIndicatorView to the user till the time document loads.

The solution for my error was:

//Create a alertView add UIActivityIndicatorView to it and present it in ViewController

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//Call method 1 todo background process like getting data

dispatch_sync(dispatch_get_main_queue(), ^{
    //Call method 2 to update the UI
    [alert dismissViewControllerAnimated:YES completion:^(void){
        //My mistake was: I was calling method 2 over here to update the UI
        return;
    }];
});
});

Solution 10 - Ios

Changing localization string from en to United States fixed this for me. However, make sure you clean after you change Info.plist. I've noticed that updates don't work when you just build after making plist changes. enter image description here

Solution 11 - Ios

In my case it was Little Snitch, it was blocking urls automatically.

Solution 12 - Ios

I could reproduce the error for me: If a make changes to one of the Views within a View that I am actually closing already (popViewControllerAnimated) I receive the error.

I am having a UINavigationButton action that makes an asynchronous task (POSTRequest). Before performing this request I set the customView of that button to an progress indicator. When coming back from the asynchronous call I dispatch to the main thread and reset the customView of that button. After that I am closing the view (popViewControllerAnimated).

This is the CORRECT code where the error does not appear:

/* right way, working without BSMachError */
@IBAction func sendRequest(sender: UIBarButtonItem) {
    /* setting the progress indicator as customView of the self.saveButton */
    self.showActivityIndicatory(self.saveButton)
    /* asynchronous REST call */
    UserDataManager.sharedInstance.requestFeedback(request, onCompletion: { error in
        dispatch_async(dispatch_get_main_queue(),{
        /* resetting the saveButton again to default by setting customView to nil */
        self.saveButton.customView = nil
        /* closing the view */
        self.navigationController!.popViewControllerAnimated(true)
      })
    })
}

What caused the error was switching lines: closing the view and then setting the customView to nil:

/* WRONG way, causing BSMachError */
@IBAction func sendRequest(sender: UIBarButtonItem) {
    /* setting the progress indicator as customView of the self.saveButton */
    self.showActivityIndicatory(self.saveButton)
    /* asynchronous REST call */
    UserDataManager.sharedInstance.requestFeedback(request, onCompletion: { error in
        dispatch_async(dispatch_get_main_queue(),{
        /* closing the view */
        self.navigationController!.popViewControllerAnimated(true)
        /* resetting the saveButton again to default by setting customView to nil */
        self.saveButton.customView = nil
      })
    })
}

Solution 13 - Ios

This error started popping up after I added some observers:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillShowNotification, object: nil)
 
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillHideNotification, object: nil)

The problem went away when I specified the class name instead of self:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.keyboardWillHideOrShow(_:)), name:UIKeyboardWillShowNotification, object: nil)
 
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.keyboardWillHideOrShow(_:)), name:UIKeyboardWillHideNotification, object: nil)

Solution 14 - Ios

I had the same error and none of the above applied to my problem. The problem appeared when I registered my view controller as an observer to a device orientation change, so the views could be resized and the drawings in the view could be made according to the new size of the view.

I had an outlet of a viewGraph which was a subclass of UIView in which I drew some graphics.In landscape mode the size of the viewGraph is larger than in portrait mode. So when the device changes its orientation the speedGraph needed to be redrawn.

The problem was, that I added several subviews to the speedGraph view, that contained graphics. These subviews needed to be laid out anew in the speedGraph view and then be redrawn. After the device changed its orientation I called viewDidAppear again to make the speedGraph view and all its subviews to be laid out anew and redraw themselves. Calling setNeedsDisplay for speedGraph doesn't work with orientation changes and subviews in a view.

What did I do wrong that caused the error to appear. In viewDidAppear I call a method which does some calculations and adds the subviews to the speedGraph view. The problem was that these subviews were created in the method and were added to the speedGraph view in this method. After leaving the method, the references to these subviews are, of course, deleted, but the subviews in the speedGraph view remain, since they are added. When the device changes, the subviews are created again and added to the speedGraph view, that already has these subviews, but can't find the references to these subviews anymore. The array of subviews of speedGraph view gets longer and longer with (i think) dangling subviews.

I solved the problem by defining the subviews that will be added to the speedGraph view as a class property and then do what needed to be done with the views inside this method. With this change the problem was gone.

Solution 15 - Ios

Since we can post all situations returning the same error here, I felt free to post mine :). I got the Error when I changed privacy settings in the background. My app opened the settings app so the user can grant it permission to its photolibrary, when the permission switch is set, the app crashes with the mensioned error:

_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)

This appears to be a forced restart of your app by the OS, because the user changed what your app can acces. So in my case it is an action of the OS who caused the error.

Solution 16 - Ios

I got the same error message, because I assign a object property like @property (assign, nonatomic) NSNumber *aVariable;, fixed by changing to strong.

Solution 17 - Ios

For what it's worth - it seems that a lot of situations throw this error. In my case, I had posted an alert when the user was dismissing a data entry form and data was in the form. I was able to eliminate the error by programmatically resigning the first responder from all applicable fields before unwinding the view controller.

Solution 18 - Ios

I saw this when I pressed the Home button while a UIAlertController was displayed, which was dismissed when I relaunched the app. I added code to dismiss the UIAlertController in the appDelegate:

func applicationWillResignActive(application: UIApplication) {
  window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
}

and the error message disappeared.

Solution 19 - Ios

The reason some developers doesn't get the error came back after changing from "Unites States" to "en" (or) other region, is that there is discrepancy between "Property list" and "Source code" views. It's probably Xcode bug. Whenever there is mismatch between these two views will throw this error, whatever it is "en" or "English". If you changed to "en" or "United States" for both views to be the same, will fix the issue.

Solution 20 - Ios

I had this error when dismissing a popover via delegate. In the delegateMethod I triggered some GUI-Stuff. Putting the GUI-Stuff in the completionBlock of dismissViewControllerAnimated fixed it.

[myPopoverView dismissViewControllerAnimated:YES completion:^{ //GUI-Stuff}];

Solution 21 - Ios

I am a newb at this so take this for what it is worth.

What fixed this for me was changing the Simulated Metrics > Size > to iPad Full Screen. All of my views EXCEPT for the one that threw this error we set to iPad Full Screen. When I changed it, the error went away...

Solution 22 - Ios

I got this error from:

var promptsArr =  StartRegAlerts() //Instance of the class
	

etc

func textFieldDidBeginEditing(textField: UITextField) {    	
	switch textField.tag {
    		case 0:
    			alert(promptsArr.prompts["Name"]!)
    		case 1:
    			alert(promptsArr.prompts["CellPhone"]!)
    		case 4:
    			alert2(promptsArr.prompts["NUMBERCORRECT"]!)
    			//alert(promptsArr.prompts["Wait4Pin"]!)
    			
    		default: break
    		}
It only occurred for case 0 but not the other cases:
As a work around for now I commented out case 0 and that stopped the error.
I then changed  calling promptsArr.prompts by:

creating a new dictionary prompt and:

 override func viewDidAppear(animated: Bool) {
    		 prompt = promptsArr.prompts //
      }

and then used prompt in my alert calls. That fixed the problem.

So it appears that it is a timing issue.

Solution 23 - Ios

with Xcode 8.1 and iOs 10 I also faced

_BSMachError: (os/kern) invalid capability (20)

_BSMachError: (os/kern) invalid name (15)

trying to override UiTraiCollection var to change at runtime the iPad’size classes to have two different interface layouts in Portraid and Landscape. It worked without any crash but generate our errors.

This was the "maliciuos" code:

override public var traitCollection: UITraitCollection {
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad && UIDevice.currentDevice().orientation.isPortrait.boolValue {
        return UITraitCollection(traitsFromCollections:[UITraitCollection(horizontalSizeClass: .Compact), UITraitCollection(verticalSizeClass: .Regular)])
    }
    return super.traitCollection
}

The errors gone using override func viewWillTransition as alternative to detect interface rotation.

I hope this will be useful to someone

Solution 24 - Ios

In my case the cause of the error was due to resizing. Built in IB. Anything that can change the size of a text field or similar for example changing line length can lead to this error I believe. In my case I simply had to adjust the text field size to cover all possibilities so it doesn't need to resize the box and conflict with something else.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLogicsaurus RexView Question on Stackoverflow
Solution 1 - IosblacharniaView Answer on Stackoverflow
Solution 2 - Ios19CraigView Answer on Stackoverflow
Solution 3 - IosLogicsaurus RexView Answer on Stackoverflow
Solution 4 - Iosagro1986View Answer on Stackoverflow
Solution 5 - IosMurray SagalView Answer on Stackoverflow
Solution 6 - IosPattView Answer on Stackoverflow
Solution 7 - IosJayprakash DubeyView Answer on Stackoverflow
Solution 8 - IosKellen StylerView Answer on Stackoverflow
Solution 9 - Ios1218GGView Answer on Stackoverflow
Solution 10 - IosAppDeverView Answer on Stackoverflow
Solution 11 - IosVaibhav MishraView Answer on Stackoverflow
Solution 12 - IosMiaumiView Answer on Stackoverflow
Solution 13 - IosFookView Answer on Stackoverflow
Solution 14 - IosMacUserTView Answer on Stackoverflow
Solution 15 - IosMQoderView Answer on Stackoverflow
Solution 16 - IosAllenView Answer on Stackoverflow
Solution 17 - IosJohnSFView Answer on Stackoverflow
Solution 18 - Iosemrys57View Answer on Stackoverflow
Solution 19 - IosNayView Answer on Stackoverflow
Solution 20 - IosYedyView Answer on Stackoverflow
Solution 21 - Iosuser1045302View Answer on Stackoverflow
Solution 22 - IosJeremyView Answer on Stackoverflow
Solution 23 - IosSwalszView Answer on Stackoverflow
Solution 24 - IosTerence KView Answer on Stackoverflow