Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: getpwuid memory leak?!?



On 03.08.2005, at 23:40, Marc Majka wrote:

The Mac OS X implementations of a number of routines found in libSystem, including getpwnam and getpwuid, have been modified to be thread-safe. Rather than returning a pointer to a static data structure, these routines allocate a structure for the returned value that is stored in thread-specific memory. The memory is recycled (by each thread) every time you make a call to one of these routines. That allows you to use these APIs safely in multi- threaded applications.

The specific routines in the Libinfo project (see Libinfo/ lookup.subproj/lu_*.c) that maintain thread-specific memory for results are:

- alias_getbyname alias_getent alias_setent alias_endent
- bootp_getbyether bootp_getbyip
- bootparams_getbyname bootparams_getent bootparams_setent bootparams_endent
- getfsbyname getfsspec getfsfile getfsent setfsent endfsent
- initgroups getgrnam getgrgid getgrent setgrent endgrent
- gethostbyaddr gethostbyname gethostbyname2 gethostent sethostent endhostent
- getipnodebyname getipnodebyaddr
- innetgr getnetgrent setnetgrent endnetgrent
- getnetbyaddr getnetbyname getnetent setnetent endnetent
- prdb_getbyname prdb_get prdb_set prdb_end
- getprotobyname getprotobynumber getprotoent setprotoent endprotoent
- getrpcbyname getrpcbynumber getrpcent setrpcent endrpcent
- getservbyport getservbyname getservent setservent endservent
- getpwnam getpwuid getpwent setpwent endpwent



Does this also mean when the thread terminates that the memory gets recycled.
I could verify that the memory in the same thread gets recycled if I call getpwuid but I still have the memory allocated after my thread terminates.



--
Marc Majka


On 3 Aug, 2005, at 10:16, Martin Bestmann wrote:


Hi,

while running my App using "ObjectAlloc" I get memory allocation that are not deallocated / static allocated when calling

getpwuid

Looking at the man pages I can not find any reference to the fact that I'm responsible for releasing the memory allocated in getpwuid.
Is this a bug in the documentation or is this a bug in the OS that with each call to getpwuid memory gets allocated.


Here is a stack crawl returned by "ObjectAlloc"


getpwuid getpw getpw_internal copy_user strdup malloc malloc_zone_malloc

getpwuid
    getpw
        getpw_internal
            copy_user
                calloc

I'm running on Mac OS X 10.4.2

Thanks,

Martin
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-dev/email@hidden

This email sent to email@hidden





_______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/email@hidden

This email sent to email@hidden
References: 
 >getpwuid memory leak?!? (From: Martin Bestmann <email@hidden>)
 >Re: getpwuid memory leak?!? (From: Marc Majka <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.