Разработка какао:маллок:бесплатный_мусор:мусор ptr = 0x18a15e0, имеет ненулевой счетчик ссылок = 1 ошибка

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

Вопрос

Я разрабатываю приложение Cocoa, и время от времени при запуске моего приложения в Xcode я получаю следующие сообщения в консоли отладки:

<Имя моего приложения>(952,0xb0103000) malloc:бесплатный_мусор:мусор ptr = 0x107b2f0, имеет ненулевой счетчик ссылок = 1

Я включил MallocStackLogging и NSZombieEnabled, выполнил malloc_history для пары этих адресов и получил следы в соответствии со строками, указанными внизу.

Похоже, что общим потоком являются ссылки на NSPopupButtonCell во всех блоках с ошибкой.

Я предполагаю, что это связано с тем, что что-то где-то CFRetained, но не выпущено или не сделано для сбора мусора.

А) Скорее всего, это программная ошибка с моей стороны или что-то в инфраструктуре, которая еще не была должным образом обновлена ​​для GC?

Б) Каковы последствия проблемы, вызвавшей это сообщение, если таковые имеются?то естьНужно ли мне обращать внимание на это сообщение или я могу просто проигнорировать его?

Вызов [2] [arg=48]:Threat_a003d720 | Start | Главный | Nsapplicationmain | -[nsapplication run] | -[nsapplication nexteventmatchingmask: ontilate: inmode: dequeue:] | _DpsNexTexTent | BlockuntilNexTeventMatchingListInMode | ECetivenexTeventCommon | Runcurrenteventloopinmode | Cfrunloopruninmode | CfrunlooprunSpecific | __Cfrunloopdoobservers | _handlewindowneedsdisplay | -[nswindow displayededed] | -[nsview displayfneeded] | -[nsview _displayRectignoringOpacity: isvisiblerct: rectisvisiblerctforview:] | -[nsthemeframe _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplayrectifneededignoringopacity: isvisiblerct: rectisvisiblerctforview: topview:] | -[nsview _recursiedisplaylydirtywithlockfocus: visrect:] | -[nsview _drawrect: clip:] | -[NSControl Drawrect:] | -[nsmenuitemcell DrawWithFrame: Inview:] | -[nspopupbuttoncell _drawindicatorwithframe: Inview:] | -[nspopupbuttoncell _indicatorframeforcellframe: Inview:] | -[nspopupbuttoncell _indicatorframeforcellframe: isflippuft:] | -[nspopupbuttoncell _defaultIndicatorimage] | -[nspopupbuttoncell _coreuidefaultindicatorimage] | +[Nsimage Imagenamed:] | +[Nsimage _coreuiimagewithname:] | +[Nsimage _coreuiimagewithbasename: состояние: фоновый стиль:] | -[NSCOREUIIMAGEREP IMAGERITHOUTEFFECTSRECT] | Sizeforimageoptions | Куикопимеры | Cuirenderer :: Copymeasurenties (Cgrect, CGContext*, __cfdictionary const*, __cfarray const*) | CuIrenderer :: CopyImageMeasurements (Long, Cuicontext const*, __cfarray const*, __cfdictionary*) | CreateImagesourcefromDisk (Long, Cuicontext const*, long*, unsigned char*) | CuisharedArtreader :: CreateImagesource (Long) | Cgimagesourcecreatewithdataprovider | CGIMagerEadCreateWithProvider | CGIMageEdCreateWithData | _Cgimagereadcreate | _Cfruntimecreateinstance | CfallocatorAllocate | auto_zone_allocate_object call [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)

Это было полезно?

Решение

На самом деле это низкоуровневая структура, используемая Xcode, и любое приложение для сбора мусора, использующее NSImage, также будет генерировать такое же (безобидное, но раздражающее) сообщение.

Один из способов заставить их замолчать здесь: http://0xced.blogspot.com/2008/09/quietxcode.html

Другие советы

Я вижу это все время с Xcode.Это проблема управления памятью в самом Xcode, и она не имеет никакого отношения к вашей программе.

Если бы ошибки были связаны с вашей программой, они бы отобразились в окне отладки (том, которое появляется при нажатии Shift-Command-R), а также в системной консоли.

Эти сообщения Xcode malloc появляются только в системной консоли, поэтому это не ваша проблема.

Итак, эта проблема с выпуском Apple IDE, которая выгружает тонны журналов ошибок памяти в системную консоль? Что может есть о чем беспокоиться :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top