Desarrollo de cacao: malloc: free_garbage: garbage ptr = 0x18a15e0, tiene un recuento distinto de cero = 1 error

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

Pregunta

Estoy desarrollando una aplicación Cocoa, y cada tanto cuando ejecuto mi aplicación en Xcode recibo los siguientes tipos de mensajes en la consola de depuración:

  

< El nombre de mi aplicación > (952,0xb0103000) malloc: free_garbage: garbage ptr = 0x107b2f0, tiene un recuento distinto de cero = 1

Encendí MallocStackLogging y NSZombieEnabled e hice un malloc_history en un par de estas direcciones y obtuve rastros a lo largo de las líneas citadas en la parte inferior.

El hilo común parece ser referencias a NSPopupButtonCell en todos los bloques con el error.

Mi conjetura es que se trata de hacer algo que se retiró CF en algún lugar pero no se liberó o se hizo basura recolectable.

A) ¿Es más probable que esto sea un error de programación de mi parte o algo en el marco que aún no se ha actualizado correctamente para el GC?

B) ¿Cuáles son las consecuencias del problema que provoca este mensaje, si lo hay? es decir, ¿debo prestar atención a este mensaje o puedo ignorarlo?

  

Llamada [2] [arg = 48]: thread_a003d720   | inicio | principal | NSApplicationMain |   - [NSApplication run] | - [NSApplication nextEventMatchingMask: untilDate: inMode: dequeue:]   El | _DPSNextEvent |   BlockUntilNextEventMatchingListInMode   El | ReceiveNextEventCommon |   RunCurrentEventLoopInMode |   CFRunLoopRunInMode |   CFRunLoopRunSpecific |   __CFRunLoopDoObservers | _handleWindowNeedsDisplay | - [NSWindow displayIfNeeded] | - [NSView   displayIfNeeded] | - [NSView   _displayRectIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView:]   El | - [NSThemeFrame   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayRectIfNeededIgnoringOpacity: isVisibleRect: rectIsVisibleRectForView: topView:]   El | - [NSView   _recursiveDisplayAllDirtyWithLockFocus: visRect:]   El | - [NSView _drawRect: clip:] |   - [NSControl drawRect:] | - [NSMenuItemCell drawWithFrame: inView:] |   - [NSPopUpButtonCell _drawIndicatorWithFrame: inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame: inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame: isFlipped:]   El | - [NSPopUpButtonCell   _defaultIndicatorImage] | - [NSPopUpButtonCell _coreUIDefaultIndicatorImage] | + [NSImage imageNamed:] | + [NSImage _coreUIImageWithName:] | + [NSImage _coreUIImageWithBaseName: estado: backgroundStyle:]   El | - [NSCoreUIImageRep   imageWithoutEffectsRect] |   SizeForImageOptions |   CUICopyMeasurements |   CUIRenderer :: CopyMeasurements (CGRect,   CGContext *, __CFDictionary const *,   __CFArray const *) | CUIRenderer :: CopyImageMeasurements (largo,   CUIContext const *, __CFArray const *,   __CFDictionary *) | CreateImageSourceFromDisk (largo,   CUIContext const *, long *, unsigned   char *) |   CUISharedArtReader :: CreateImageSource (largo)   El | CGImageSourceCreateWithDataProvider   El | CGImageReadCreateWithProvider |   CGImageReadCreateWithData |   _CGImageReadCreate | _CFRuntimeCreateInstance | CFAllocatorAllocate |   Auto_zone_allocate_object Call [4]   [arg = 0]: thread_b0103000 | thread_start   El | _pthread_start |   auto_collection_thread (void *) |   auto_collect_with_mode (Auto :: Zone *,   unsigned int) |   auto_collect_internal (Auto :: Zone *,   int)

¿Fue útil?

Solución

En realidad está en un marco de nivel inferior utilizado por Xcode, y cualquier aplicación recolectada de basura que use NSImage también generará este mismo mensaje (inocuo pero molesto).

Una forma de silenciarlos es aquí: http://0xced.blogspot.com /2008/09/quietxcode.html

Otros consejos

Veo esto todo el tiempo con Xcode. Es un problema de administración de memoria en el propio Xcode, y no tiene nada que ver con su programa.

Si los errores estuvieran relacionados con su programa, aparecerían en la ventana de depuración (la que aparece cuando presiona shift-command-r), así como en la consola del sistema.

Esos mensajes Xcode malloc aparecen solo en la consola del sistema, por lo que no son su problema.

Ahora, ¿este problema de Apple lanzando un IDE que arroja toneladas de registros de errores de memoria en la consola del sistema? Eso podría ser algo de qué preocuparse :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top