Memory leaks in smbd ?
Martin Zielinski
mz at seh.de
Wed Nov 12 10:44:52 GMT 2008
Hello!
With samba 3.2.4 (and even 3.0.x) we see growing smbd's in some situations.
Using smbcontrol to find the reason gave the (snipped) result attached
to this mail.
I'm not familliar with the talloc methods.
But the first scans for samu_new brought:
winbindd_passdb.c / lookup_usergroups
[...]
if ( (user = samu_new(mem_ctx)) == NULL ) {
return NT_STATUS_NO_MEMORY;
}
if ( !pdb_getsampwsid( user, user_sid ) ) {
return NT_STATUS_NO_SUCH_USER;
[...]
looks, like there is a "TALLOC_FREE( user );" missing??
or in auth_util.c / create_token_from_username:
if (sid_check_is_in_our_domain(&user_sid)) {
bool ret;
/* This is a passdb user, so ask passdb */
struct samu *sam_acct = NULL;
if ( !(sam_acct = samu_new( tmp_ctx )) ) {
result = NT_STATUS_NO_MEMORY;
goto done;
}
become_root();
ret = pdb_getsampwsid(sam_acct, &user_sid);
unbecome_root();
if (!ret) {
DEBUG(1, ("pdb_getsampwsid(%s) for user %s failed\n",
sid_string_dbg(&user_sid), username));
DEBUGADD(1, ("Fall back to unix user %s\n", username));
goto unix_user;
[...]
The unix_user mark is outside of the sam_acct declaration and sam_acct
will not be destroyed.
As said before, I'm not familiar with the tallocs, so I dunno, wether
result = pdb_enum_group_memberships(tmp_ctx, sam_acct,
&group_sids, &gids,
&num_group_sids);
will later take care of the memory of sam_acct. Otherwise sam_acct would
not be destroyed anytime.
Comments, hints, corrections?
Bye,
Martin
--
Martin Zielinski mz at seh.de
Softwareentwicklung T +49 (0)521 94226 76
SEH Computertechnik GmbH www.seh.de
-------------- next part --------------
================== smbcontrol =====================
full talloc report on 'null_context' (total 489514 bytes in 22160 blocks)
msg_pool_usage contains 527 bytes in 3 blocks (ref 0)
char contains 512 bytes in 1 blocks (ref 0)
.name contains 15 bytes in 1 blocks (ref 0)
struct messaging_array contains 84 bytes in 3 blocks (ref 0)
librpc/gen_ndr/ndr_messaging.c:77 contains 28 bytes in 1 blocks (ref 0)
struct ndr_pull contains 48 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
Printer Entry [-40000784] contains 26 bytes in 2 blocks (ref 0)
.name contains 26 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
Printer Entry [-40000784] contains 26 bytes in 2 blocks (ref 0)
.name contains 26 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
Printer Entry [-40000784] contains 26 bytes in 2 blocks (ref 0)
.name contains 26 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
NT_USER_TOKEN contains 364 bytes in 2 blocks (ref 0)
lib/util_nttoken.c:50 contains 340 bytes in 1 blocks (ref 0)
NT_USER_TOKEN contains 364 bytes in 2 blocks (ref 0)
lib/util_nttoken.c:50 contains 340 bytes in 1 blocks (ref 0)
pipe_state spoolss 79e410 contains 26 bytes in 2 blocks (ref 0)
.name contains 26 bytes in 1 blocks (ref 0)
ÃQâ úÃÅAL contains 0 bytes in 1 blocks (ref 0)
smb_np_struct contains 64 bytes in 2 blocks (ref 0)
spoolss contains 8 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
struct samu contains 543 bytes in 26 blocks (ref 0)
struct passwd contains 71 bytes in 6 blocks (ref 0)
/bin/sh contains 8 bytes in 1 blocks (ref 0)
/tmp/ contains 6 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
gwh1Slk4/wa86 contains 14 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
lib/data_blob.c:74 contains 16 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator\profile contains 34 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
\\isd0ac778\administrator contains 26 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
contains 1 bytes in 1 blocks (ref 0)
ISD0AC778 contains 10 bytes in 1 blocks (ref 0)
administrator contains 14 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
uint32 contains 8 bytes in 1 blocks (ref 0)
struct bitmap contains 8 bytes in 1 blocks (ref 0)
[ ... and so on and so forth ... ]
More information about the samba-technical
mailing list