Développement de cacao: malloc: free_garbage: garbage ptr = 0x18a15e0, a une erreur refcount = 1 non nulle

StackOverflow https://stackoverflow.com/questions/803643

Question

Je développe une application Cocoa et, chaque fois que j'exécute mon application dans Xcode, je reçois les sortes de messages suivants dans la console de débogage:

  

< Le nom de mon application > (952,0xb0103000) malloc: free_garbage: garbage ptr = 0x107b2f0, a un nombre de références différent de zéro refcount = 1

J'ai activé MallocStackLogging et NSZombieEnabled, puis une malloc_history sur quelques adresses et obtenu des traces similaires à celles citées en bas.

Le fil conducteur semble être les références à NSPopupButtonCell dans tous les blocs avec l'erreur.

Je suppose que cela concerne quelque chose qui est retrouvé quelque part dans CF. Mais qui n'a pas été libéré ou rendu déchet.

A) Est-ce que cela est plus susceptible d’être une erreur de programmation de ma part ou quelque chose dans le cadre qui n’a pas encore été correctement mis à jour pour le GC?

B) Quelles sont les conséquences de la question provoquant ce message, le cas échéant? Dois-je faire attention à ce message ou puis-je simplement l'ignorer?

  

Appelez [2] [arg = 48]: thread_a003d720   | commencer | principal | NSApplicationMain |   - [Exécution de NSApplication] | - [NSApplication nextEventMatchingMask: UntilDate: inMode: dequeue:]   | _DPSNextEvent |   BlockUntilNextEventMatchingListInMode   | ReceiveNextEventCommon |   RunCurrentEventLoopInMode |   CFRunLoopRunInMode |   CFRunLoopRunSpecific |   __CFRunLoopDoObservers | _handleWindowNeedsDisplay | - [NSWindow displayIfNeeded] | - [NSView   displayIfNeded] | - [NSView   _displayRectIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView:]   | - [NSThemeFrame   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   | - [NSView   _recursiveDisplayAllDirtyWithLockFocus: visRect:]   | - [NSView _drawRect: clip:] |   - [NSControl drawRect:] | - [NSMenuItemCell drawWithFrame: inView:] |   - [NSPopUpButtonCell _drawIndicatorWithFrame: inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame: inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame: isFlipped:]   | - [NSPopUpButtonCell   _defaultIndicatorImage] | - [NSPopUpButtonCell _coreUIDefaultIndicatorImage] | + [NSImage imageNamed:] | + [NSImage _coreUIImageWithName:] | + [NSImage _coreUIImageWithBaseName: state: backgroundStyle:]   | - [NSCoreUIImageRep   imageWithoutEffectsRect] |   SizeForImageOptions |   CUICopyMeasurments |   CUIRenderer :: CopyMeasurements (CGRect,   CGContext *, __CFDictionary const *,   __CFArray const *) | CUIRenderer :: CopyImageMeasurements (long,   CUIContext const *, __CFArray const *,   __CFDictionary *) | CreateImageSourceFromDisk (long,   CUIContext const *, long *, non signé   char *) |   CUISharedArtReader :: CreateImageSource (long)   | CGImageSourceCreateWithDataProvider   | CGImageReadCreateWithProvider |   CGImageReadCreateWithData |   _CGImageReadCreate | _CFRuntimeCreateInstance | CFAllocatorAllocate |   auto_zone_allocate_object Appel [4]   [arg = 0]: thread_b0103000 | thread_start   | _pthread_start |   auto_collection_thread (void *) |   auto_collect_with_mode (Auto :: Zone *,   unsigned int) |   auto_collect_internal (Auto :: Zone *,   int)

Était-ce utile?

La solution

Il s’agit en fait d’un framework de niveau inférieur utilisé par Xcode, et toute application récupérée qui utilise NSImage générera également le même message (inoffensif mais gênant).

Une façon de les réduire au silence est la suivante: http://0xced.blogspot.com /2008/09/quietxcode.html

Autres conseils

Je le vois tout le temps avec Xcode. C’est un problème de gestion de la mémoire dans Xcode lui-même et rien à voir avec votre programme.

Si les erreurs étaient liées à votre programme, elles s'afficheraient dans la fenêtre de débogage (celle qui apparaît lorsque vous appuyez sur shift-command-r) ainsi que dans la console système.

Ces messages Xcode Malloc n'apparaissent que dans la console système. Ils ne sont donc pas votre problème.

Maintenant, ce numéro d’Apple publie-t-il un IDE qui envoie des tonnes d’erreurs de mémoire dans la console système? Cela pourrait être un sujet de préoccupation:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top