How to resolve malloc_error_break?
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.
Comments
-
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 over 14 yearsbut why it show error log when i rotate my device, could you tell me?
-
Rémi Vennereau over 14 yearsDoes it still do that AFTER you have cleaned up your dealloc and viewDidUnload methods?
-
RAGOpoR over 14 yearsYes 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.