gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory leaks galore!


From: Jamie Ramone
Subject: Re: Memory leaks galore!
Date: Wed, 20 Feb 2013 16:50:03 -0300


On Wed, Feb 20, 2013 at 3:50 PM, Ivan Vučica <address@hidden> wrote:
A quick response via phone:

On 20. 2. 2013., at 19:00, Jamie Ramone <address@hidden> wrote:




On Wed, Feb 20, 2013 at 2:20 PM, Ivan Vučica <address@hidden> wrote:
Most of the losses seem to be in GSPrivateBuildStrings().
  http://svn.gna.org/svn/gnustep/libs/base/trunk/Source/externs.m
which says it's called from +[NSObject initialize] solely to optimize existing global constant strings.

So that's alright; you don't want these released until the end of the program, and perhaps not even then. In a discussion from, I think, a year ago, David advocated avoiding deinitalization and releasing of as much stuff at the end of the program as realistically possible. Imagine allocating a gigabyte of small objects. Instead of deallocing them, you simply leave them be. They'll get deallocated at the end of the program, and you'll avoid potentially swapping a gigabyte of virtual memory from disk into RAM. So I guess that not bothering to use something like C++ destructors or something with atexit() to hack deallocing at the end of the program is the result of this (good and smart) opinion.

I'm not sure I follow the deallocation-swap argument. Why would a block of memory that was swapped out be swapped back in when deallocating it? My understanding is that free () simply changes some values in the c runtime to mark that block of memory as available.

That is my understanding of free() too. The problem is not with freeing one massive 1gb block. But imagine freeing 1gb of SMALL objects. If -dealloc is more complex and references ivars, you need to swap them in, free subobjects, stuff like that.

Oh, OK, I see what you mean now. Yes, that case is an obvious swap-monsoon. However, the proper way to deal with that problem is not causing it in the first place. Plus, main memory is progressively abundant. It gets harder and harder to use up all the memory so as to cause even a single swap, at least by the data structures themselves. I don't even have a swap partition, what with having 8 GB and all. I don't know, it seems like a not very common case.

You will have to look up the old thread, or wait for someone with more understanding to chime in.

But be that as it may, the main problem I have with this kind of lazy deallocation is that it makes my own memory leaks much harder to find as they get camouflaged by these. Can this behavior be turned off in favor of a traditional bracketed approach?

If my understanding is correct, the code isn't even there. You could write something using a C++ destructor trick using a global variable that will get destructed at exit no matter what (well, unless you have a very nasty crash). But you'd have to write code to perform these free()s.

There is probably some way of telling Valgrind to ignore certain leaks, right?

I'll check the documentation but I don't think that's possible. Valgrind checks for alloc/free balance. While you can change the level of verbosity, I don't think it's possible to get it to filter (what it sees as) leaks. But like I said, I have to check the documentation just to be sure.
 
The only case where you want to dealloc stuff is where you do deinitialization of network connection and similar things in -(void)dealloc, and yesterday I ran into Apple recommendation that in clean code you don't really want to do that in -(void)dealloc. Or should avoid it as much as possible. I'm cargo-culting here; it sounds reasonable, but I don't really have anything more than that.

I know, that's why I use release ;-)

You override -release to release resources at object's end-of-life? :-S

No, I release an object once I'm done using it making use of the reference count mechanism. I'm surprised you never heard of it, it's been around for decades :P But the reference count mechanism  guarantees that -dealloc will eventually be called, at least in theory, where we don't have this leave-it-to-the-os hack. Which is why I have implementations of -dealloc in my objects.
Heck, even Apple tried to push "immediate termination" in 10.7 -- probably precisely to cut down on shutdown times! Killing an app is faster than gracefully shutting it down.

That's fine for some desktop environments. However, I really, really, REALLY don't care about it not shitting down instantaneously. For my purposes, a graceful shutdown is preferred.

I like graceful shutdown too, but am also pointing out why (some of) the leaks are not troublesome. :-)

I'm afraid I cannot help more than this. Who knows how much Valgrind would help with Cocoa?
 
Yes, I see. Thanks for all the help. 
 
Oh, BTW, about that macro, do you mean redefine it in my code or recompile GNUstep-base?
More leaks seem to come from Unicode.m. Again, creation of a large static table seems to be the cause, and is not cause for alarm.


Could more leaks be static constant NSStrings?

In any case, if possible, try configuring Valgrind to not treat these strings as leaks. Or try replacing GS_REPLACE_CONSTANT_STRING's #define with an empty define; it will cut down at least on these erroneous leak reports.

OK, I'll try that. Thanks. 

////////
However, I really can't see any LARGE block being allocated! Note that out of those ~400kb of still alocated memory, 390kb are still reachable, and did not get reported by Valgrind in the log you printed out. :-)

And perhaps they're not leaks at all, but are meant to be deallocated by the death of the process; if you can't reliably notice increments in memory usage over time, I'd say don't worry.

On 20. 2. 2013., at 17:58, Jamie Ramone <address@hidden> wrote:

> Hi everyone. I'v been having a bit of a hard time with a program I'm writing. I saw lots of memory leaks with valgrind so I reviewed everything, fixed a few obvious mistakes and managed to reduce it to 1.2 MB of memory lost. But after that I was stumped. I looked trough the code, Apple's and GNUstep's (meager) documentation and nothing. I finally decided to run a little test. I commented out the main function and replaced it with this:
>
> int main ( int args, char ** arg )
> {
>       int errorCode = -1;
>       NSAutoreleasePool * pool = nil;
>
>       pool = [NSAutoreleasePool new];
>
>       if ( pool != nil ) {
>               errorCode = 0;
>       }
>
>       [pool release];
>
>       return errorCode;
> }
>
> I ran it through valgrind and got this:
>
> ...
> ==26730==
> ==26730== HEAP SUMMARY:
> ==26730==     in use at exit: 401,984 bytes in 8,085 blocks
> ==26730==   total heap usage: 14,157 allocs, 6,072 frees, 1,881,009 bytes allocated
> ==26730==
> ==26730== Searching for pointers to 8,085 not-freed blocks
> ==26730== Checked 2,228,888 bytes
> ==26730==
> ==26730== 4 bytes in 1 blocks are possibly lost in loss record 1 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585F334: GSPrivateBuildStrings (externs.m:294)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 8 bytes in 1 blocks are possibly lost in loss record 4 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x572D85D: NSCreateMapTableWithZone (GSIMap.h:572)
> ==26730==    by 0x57C0D3D: _c_NSObject__initialize (NSObject.m:1149)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 8 bytes in 1 blocks are possibly lost in loss record 5 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DD8C: GSPrivateBuildStrings (externs.m:266)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 12 bytes in 1 blocks are possibly lost in loss record 6 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D822: GSPrivateBuildStrings (externs.m:259)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 14 bytes in 1 blocks are possibly lost in loss record 8 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D8E8: GSPrivateBuildStrings (externs.m:260)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 14 bytes in 1 blocks are possibly lost in loss record 9 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DB3A: GSPrivateBuildStrings (externs.m:263)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 14 bytes in 1 blocks are possibly lost in loss record 10 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DC00: GSPrivateBuildStrings (externs.m:264)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 15 bytes in 1 blocks are possibly lost in loss record 12 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D5D0: GSPrivateBuildStrings (externs.m:256)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 20 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x585A9FF: NSZoneCalloc (NSZone.m:2076)
> ==26730==    by 0x572D728: NSCreateMapTableWithZone (GSIMap.h:786)
> ==26730==    by 0x57C0D3D: _c_NSObject__initialize (NSObject.m:1149)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 21 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x57C199E: NSAllocateObject (NSObject.m:817)
> ==26730==    by 0x5818243: _c_NSString__initialize (NSString.m:613)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x57C0C94: _c_NSObject__initialize (NSObject.m:1140)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 22 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585CA36: GSPrivateBuildStrings (externs.m:241)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 23 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D2B8: GSPrivateBuildStrings (externs.m:252)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 24 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D37E: GSPrivateBuildStrings (externs.m:253)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are possibly lost in loss record 25 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DF18: GSPrivateBuildStrings (externs.m:268)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 16 bytes in 1 blocks are definitely lost in loss record 28 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x5CD6C49: objc_malloc (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5CAE: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5E44: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5E5B: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5E5B: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5E5B: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD5EE3: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD66D4: __objc_exec_class (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x58AC2C5: ??? (in /SystemLibrary/Libraries/libgnustep-base.so.1.24.0)
> ==26730==    by 0x56AF342: ??? (in /SystemLibrary/Libraries/libgnustep-base.so.1.24.0)
> ==26730==
> ==26730== 17 bytes in 1 blocks are possibly lost in loss record 29 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585C970: GSPrivateBuildStrings (externs.m:240)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 18 bytes in 1 blocks are possibly lost in loss record 30 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585ED04: GSPrivateBuildStrings (externs.m:286)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 18 bytes in 1 blocks are possibly lost in loss record 31 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585F4C0: GSPrivateBuildStrings (externs.m:296)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 18 bytes in 1 blocks are possibly lost in loss record 32 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D444: GSPrivateBuildStrings (externs.m:254)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 18 bytes in 1 blocks are possibly lost in loss record 33 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D50A: GSPrivateBuildStrings (externs.m:255)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 18 bytes in 1 blocks are possibly lost in loss record 34 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D696: GSPrivateBuildStrings (externs.m:257)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 20 bytes in 1 blocks are possibly lost in loss record 35 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E482: GSPrivateBuildStrings (externs.m:275)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 20 bytes in 1 blocks are possibly lost in loss record 36 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E9EC: GSPrivateBuildStrings (externs.m:282)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 21 bytes in 1 blocks are possibly lost in loss record 37 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E60E: GSPrivateBuildStrings (externs.m:277)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 21 bytes in 1 blocks are possibly lost in loss record 38 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E926: GSPrivateBuildStrings (externs.m:281)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 21 bytes in 1 blocks are possibly lost in loss record 39 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D066: GSPrivateBuildStrings (externs.m:249)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 21 bytes in 1 blocks are possibly lost in loss record 40 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E0A4: GSPrivateBuildStrings (externs.m:270)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 22 bytes in 1 blocks are possibly lost in loss record 41 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E3BC: GSPrivateBuildStrings (externs.m:274)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 22 bytes in 1 blocks are possibly lost in loss record 42 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585EC3E: GSPrivateBuildStrings (externs.m:285)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 22 bytes in 1 blocks are possibly lost in loss record 43 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585CD4E: GSPrivateBuildStrings (externs.m:245)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 22 bytes in 1 blocks are possibly lost in loss record 44 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585CE14: GSPrivateBuildStrings (externs.m:246)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 22 bytes in 1 blocks are possibly lost in loss record 45 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D9AE: GSPrivateBuildStrings (externs.m:261)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 23 bytes in 1 blocks are possibly lost in loss record 46 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E548: GSPrivateBuildStrings (externs.m:276)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 23 bytes in 1 blocks are possibly lost in loss record 47 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E79A: GSPrivateBuildStrings (externs.m:279)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 23 bytes in 1 blocks are possibly lost in loss record 48 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585CFA0: GSPrivateBuildStrings (externs.m:248)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 23 bytes in 1 blocks are possibly lost in loss record 49 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DCC6: GSPrivateBuildStrings (externs.m:265)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 24 bytes in 1 blocks are possibly lost in loss record 61 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D1F2: GSPrivateBuildStrings (externs.m:251)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 25 bytes in 1 blocks are possibly lost in loss record 62 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D75C: GSPrivateBuildStrings (externs.m:258)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 25 bytes in 1 blocks are possibly lost in loss record 63 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E16A: GSPrivateBuildStrings (externs.m:271)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 27 bytes in 1 blocks are possibly lost in loss record 64 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585E6D4: GSPrivateBuildStrings (externs.m:278)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 27 bytes in 1 blocks are possibly lost in loss record 65 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585F64C: GSPrivateBuildStrings (externs.m:298)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 27 bytes in 1 blocks are possibly lost in loss record 66 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585CEDA: GSPrivateBuildStrings (externs.m:247)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 28 bytes in 1 blocks are possibly lost in loss record 67 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585EAB2: GSPrivateBuildStrings (externs.m:283)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 28 bytes in 1 blocks are possibly lost in loss record 68 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585EB78: GSPrivateBuildStrings (externs.m:284)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 28 bytes in 1 blocks are possibly lost in loss record 69 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585D12C: GSPrivateBuildStrings (externs.m:250)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 29 bytes in 1 blocks are possibly lost in loss record 70 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DA74: GSPrivateBuildStrings (externs.m:262)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 29 bytes in 1 blocks are possibly lost in loss record 71 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==    by 0x585DE52: GSPrivateBuildStrings (externs.m:267)
> ==26730==    by 0x57C0CAC: _c_NSObject__initialize (NSObject.m:1142)
> ==26730==    by 0x5CD97D9: ??? (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x5CD9BC7: objc_msg_lookup (in /usr/lib/libobjc.so.2.0.0)
> ==26730==    by 0x405893: main (main.m:213)
> ==26730==
> ==26730== 30 bytes in 1 blocks are possibly lost in loss record 72 of 463
> ==26730==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
> ==26730==    by 0x585A8B5: default_malloc (NSZone.m:123)
> ==26730==    by 0x56DB11C: _i_GSPlaceholderString__initWithBytes_length_encoding_ (GSString.m:1029)
> ==26730==3



--
Besos, abrazos, confeti y aplausos.
Jamie Ramone
"El Vikingo"

reply via email to

[Prev in Thread] Current Thread [Next in Thread]