How to resolve malloc_error_break?

26,829

Solution 1

You seem to be repeatedly trying to dealloc your pointers. In the dealloc method ONLY call [blah release]; and in the viewDidUnload method assign your pointers a nil value. Do not do BOTH in both methods.

- (void)dealloc
{
    [self.myWebView release];
    [mybanner release];
    [super dealloc];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.myWebView = nil;

}

You seem to be missing a few variables as well.

Solution 2

Amazingly, what solved it for me was to shut down and turn back on the debug device. Oh, Apple...

Solution 3

This may seem completely unrelated, but with a similar error, what worked for me was to repair the disk permissions.

  • Open Disk Utility app -> Repair Disk Permissions
  • Restart the computer

I got this suggestion from Mac Terminal - 'pointer being freed was not allocated' error when opening terminal

Also, I realize that the question is 6 years old, so it's unlikely to be useful to the original asker. I hope this answer helps other people with similar errors.

Share:
26,829
RAGOpoR
Author by

RAGOpoR

iOS & C# software developer

Updated on August 08, 2020

Comments

  • RAGOpoR
    RAGOpoR almost 4 years

    I'm encountering this error with the iOS 3.0 simulator, but not on the 3.1.3 and 3.2 simulators.

    After creating a symbolic breakpoint on malloc_error_break, I'm seeing this in the log:

    [Session started at 2010-02-13 19:15:22 +0700.]
    2010-02-13 19:15:24.405 iPortals[21656:207] bool for 1
    iPortals(21656,0xa0089500) malloc: *** error for object 0x285e000: pointer being freed was not allocated
    *** set a breakpoint in malloc_error_break to debug
    iPortals(21656,0xa0089500) malloc: *** error for object 0x2850000: pointer being freed was not allocated
    *** set a breakpoint in malloc_error_break to debug
    iPortals(21656,0xa0089500) malloc: *** error for object 0x286c000: pointer being freed was not allocated
    *** set a breakpoint in malloc_error_break to debug
    iPortals(21656,0xa0089500) malloc: *** error for object 0x287c000: pointer being freed was not allocated
    *** set a breakpoint in malloc_error_break to debug
    

    here is my code

    @implementation WebViewController
    
    @synthesize myWebView;
    @synthesize AppDelegate;
    @synthesize mybanner;
    @synthesize request;
    
    - (void)dealloc
    {
        //NSLog(@"WebViewController has been dealloc");
        myWebView.delegate = nil;
        self.myWebView = nil;
        [self.myWebView release];
        [super setView:nil];
    
    
        [myWebView release];
        myWebView = nil;
        request = nil;
    
        [mybanner release];
        [super dealloc];
    }
    
    - (void)setView:(UIView *)aView
    {
        //NSLog(@"setView:(UIView *)aView");
        if (aView == nil) {
            self.myWebView = nil;
        }    
        [super setView:aView];
    }
    
    - (void)action {
        AppDelegate = nil;
        AppDelegate = [[UIApplication sharedApplication] delegate];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:AppDelegate.PushLink]];
    }
    
    - (void)didReceiveMemoryWarning {
    
        //NSLog(@"didReceiveMemoryWarning: view = %@, superview = %@", [self valueForKey:@"_view"], [[self valueForKey:@"_view"] superview]);
        [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
        // Release anything that's not essential, such as cached data
        [[NSURLCache sharedURLCache] removeAllCachedResponses];
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //NSLog(@"viewDidLoad: view = %@", self.view);
        self.title = NSLocalizedString(@"iPortals", @"");
    
    
        //UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithTitle:@"Item" style:UIBarButtonItemStyleBordered   target:self action:@selector(action];
        //self.navigationController.toolbar setItems: = [[UIBarButtonItem alloc] initWithTitle:@"[...]" style:UIBarButtonItemStyleBordered target:self action:@selector(action)];
    
        /*
        UIBarButtonItem *emailButton = [[UIBarButtonItem alloc]
                                        initWithImage:[UIImage imageNamed:@"icon.png"]
                                        style:UIBarButtonItemStylePlain target:self
                                        action:@selector(action)];
        self.toolbarItems = [NSArray arrayWithObjects:emailButton, nil];
        [emailButton release];
        //*/
        AppDelegate = nil;
        AppDelegate = [[UIApplication sharedApplication] delegate];
    
        //NSLog(@"777777777 %@",AppDelegate.PushLink);
        /*
        CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
        webFrame.origin.y += kTopMargin + 5.0;  // leave from the URL input field and its label
        webFrame.size.height = 400;
        //webFrame.size.height -= 40.0;
        self.myWebView = nil;
    
        //*/
        //self.myWebView = [[[UIWebView alloc] initWithFrame:webFrame] autorelease];
    
        self.myWebView.backgroundColor = [UIColor grayColor];
        self.myWebView.scalesPageToFit = YES;
        self.myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
        self.myWebView.delegate = self;
    
        [self.view addSubview: self.myWebView];
        self.mybanner.backgroundColor = [UIColor clearColor];
        [self.view addSubview: self.mybanner];
    
        /*
        CGRect textFieldFrame = CGRectMake(kLeftMargin, kTweenMargin,
                                           self.view.bounds.size.width - (kLeftMargin * 2.0), kTextFieldHeight);
        UITextField *urlField = [[UITextField alloc] initWithFrame:textFieldFrame];
        urlField.borderStyle = UITextBorderStyleBezel;
        urlField.textColor = [UIColor blackColor];
        urlField.delegate = self;
        urlField.placeholder = @"<enter a URL>";
        urlField.text = AppDelegate.PushLink;
        urlField.backgroundColor = [UIColor whiteColor];
        urlField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        urlField.returnKeyType = UIReturnKeyGo;
        urlField.keyboardType = UIKeyboardTypeURL;  // this makes the keyboard more friendly for typing URLs
        urlField.autocapitalizationType = UITextAutocapitalizationTypeNone; // don't capitalize
        urlField.autocorrectionType = UITextAutocorrectionTypeNo;   // we don't like autocompletion while typing
        urlField.clearButtonMode = UITextFieldViewModeAlways;
        [urlField setAccessibilityLabel:NSLocalizedString(@"URLTextField", @"")];
        [self.view addSubview:urlField];
        [urlField release];
         */
    
        request = nil;
        request = [NSURLRequest requestWithURL:[NSURL URLWithString:AppDelegate.PushLink]
                                   cachePolicy:NSURLRequestUseProtocolCachePolicy
                               timeoutInterval:60.0];
        [self.myWebView loadRequest:request];
    }
    
    // called after the view controller's view is released and set to nil.
    // For example, a memory warning which causes the view to be purged. Not invoked as a result of -dealloc.
    // So release any properties that are loaded in viewDidLoad or can be recreated lazily.
    //
    - (void)viewDidUnload
    {
        [super viewDidUnload];
    
        // release and set to nil
    
        [self.myWebView release];
        self.myWebView = nil;
    
    }
    
    -(BOOL)canBecomeFirstResponder {
        //NSLog(@"canBecomeFirstResponder ");
        return YES;
    }
    
    -(void)viewDidAppear:(BOOL)animated {
        //NSLog(@"viewDidAppear ");
    
        [self becomeFirstResponder];
    }
    
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
        //NSLog(@"overrideoverrideoverrideoverrideoverrideoverrideoverrideoverride ");
        if ( event.subtype == UIEventSubtypeMotionShake )
        {
            // Put in code here to handle shake
            AppDelegate = nil;
            AppDelegate = [[UIApplication sharedApplication] delegate];
            [AppDelegate ToggleNavigationBar];
            [AppDelegate playsound:1];
            [self setAdHide:AppDelegate.toggle];
    
        }
    }
    
    - (void)setAdHide:(BOOL)hide {
    
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.6];
        if (!hide) {
            if (current == UIInterfaceOrientationLandscapeLeft || current == UIInterfaceOrientationLandscapeRight) {
                [mybanner setFrame:CGRectMake(0, 272, mybanner.frame.size.width, mybanner.frame.size.height)];
            }
            else {
                [mybanner setFrame:CGRectMake(0, 432, mybanner.frame.size.width, mybanner.frame.size.height)];
            }
        }
        else {
            [self restoreAd];
        }
        [UIView commitAnimations];
    
    }
    
    - (void)restoreAd {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.6];
        [mybanner setFrame:CGRectMake(0, 0, mybanner.frame.size.width, mybanner.frame.size.height)];    
        [UIView commitAnimations];
    }
    
    #pragma mark -
    #pragma mark UIViewController delegate methods
    
    - (void)viewWillAppear:(BOOL)animated
    {
        self.myWebView.delegate = nil;
        self.myWebView.delegate = self; // setup the delegate as the web view is shown
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        //[self.myWebView removeFromSuperview];
        [self.myWebView stopLoading];   // in case the web view is still loading its content
        self.myWebView.delegate = nil;  // disconnect the delegate as the webview is hidden
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    {
        current = interfaceOrientation;
        [self restoreAd];
        return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIDeviceOrientationPortrait) ||
                (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
    }
    
    // this helps dismiss the keyboard when the "Done" button is clicked
    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [textField resignFirstResponder];
        [self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[textField text]]]];
    
        return YES;
    }
    
    
    #pragma mark -
    #pragma mark UIWebViewDelegate
    
    - (void)webViewDidStartLoad:(UIWebView *)webView
    {
    
        // starting the load, show the activity indicator in the status bar
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    }
    
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        // finished loading, hide the activity indicator in the status bar
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
    }
    
    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    {
    
        // load error, hide the activity indicator in the status bar
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
        // report the error inside the webview
        //NSString* errorString = [NSString stringWithFormat:
        //                       @"<html><center><font size=+5 color='red'>An error occurred:<br>%@</font></center></html>",
        //                       error.localizedDescription];
        //[self.myWebView loadHTMLString:errorString baseURL:nil];
        //URLCacheAlertWithError(error);
    }
    
    @end
    
  • RAGOpoR
    RAGOpoR over 14 years
    but why it show error log when i rotate my device, could you tell me?
  • Rémi Vennereau
    Rémi Vennereau over 14 years
    Does it still do that AFTER you have cleaned up your dealloc and viewDidUnload methods?
  • RAGOpoR
    RAGOpoR over 14 years
    Yes I already clean up ,when I rotate device it also report error again. In simulator 3.1.3 and 3.2 not report any error.