Am 17.03.2010 12:34, schrieb Richard Frith-Macdonald: > > On 17 Mar 2010, at 09:26, Fred Kiefer wrote: > >> I am trying to hunt down a very hard to catch memory issue. It >> should be easy to reproduce for anybody interested. Just start up >> Ink, open the info panel and start up the memory panel by clicking >> on the icon. Now press the update button a few times until things >> settle down. >> >> If you keep on pressing update you will notice that only one value >> keeps on changing. It is the amount of GSCBufferString objects at >> increases by one every time you press the button. If you move the >> mouse a bit, it will even increase more. >> >> I was able to track down the lost string itself, it is >> @"NSStringPboardType". And it is easy to see that the problem >> vanishes as soon as you close the last open document. This means >> that the leak is most likely related to the NSTextView and there to >> the pasteboard handling. It also goes away when I comment out the >> contents of validateUserInterfaceItem:, that way it was possible to >> track the problem down to the call to [[NSPasteboard >> generalPasteboard] availableTypeFromArray: types] >> >> It is the result value of this call that gets leaked. Now >> NSPasteboard is implemented mostly as DO to the pasteboard server >> and here I am lost. How could we leak memory here? > > Bug in DO. > > Thanks to you tracking the whole thing down with such precision, it > was possible to know almost exactly where to look (it really had to > be returning a string value from a method in a remote process) and I > think I have a fix in place in NSConnection.m in svn (please try it > out). > > Probably we should do a thorough audit of how different data types > are returned (either as a return value or a by-reference argument) > from a method called over DO ... since the behavior of invocations > has changed subtly over the years, and code which may once have been > correct could now be leaking. Unfortunately I don't have time to do > that right now. >
Great! This fixed the problem. Now I am back to the original reason why I started the memory panel on Ink. _______________________________________________ Gnustep-dev mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnustep-dev
