Hello, we are in troubles with smbd processes which are rapidly growing in terms of memory usage. We did implement a mean that gives us ability to dynamically mount or unmount samba shares. I prepared a simple script which demonstrates this very closely. Script loops following operations: - touch samba config file to make it newer - send SIGHUP to smbd process (kill -1 <smbd_pid>) - connect with smbclient to samba share - perform a fs operation (e.g. dir) - disconnect Script is attached to this mail. Also configuration file is attached. Next table shows growing rate: #repetition resident size virtual size [kb] [kb] ----------------------------------------------------- 0 1584 3152 100 3016 4032 200 3728 4768 300 4576 5640 400 5280 6368 500 6144 7240 600 6792 7976 700 7328 8848 800 7488 9584 900 7920 10456 1000 7824 11192 We examined smbd process with purify tool but found *NO* memory leaks which would explain the memory growth. SIGHUP achieves that samba checks if configuration file(s) has changed and therefore services must be reloaded (function process.c:check_reload()). Because it is touched right before, samba always decides to reload services before new connection (function server.c:open_sockets()). Therefore function server.c:reload_services() is called over and over again during execution of the script. We modified reload_services() such that it executes only for the first time, on all subsequent occurances it just return. With this modification, process was not growing any more. Then we were moving this firts time condition down the statements within the function. It brought us to function call loadparm.c:lp_load(). If we set return right before lp_load() then memory usage is not growing, but if return is set after it then memory is growing again. This is all what we managed to investigate. The problem is very very urgent for us and I would kindly ask you to have a look into the matter. I would appreciate at least some hints in what directions we should proceed in finding the cause of the problem, if the problem can not be solved immediately by samba team. I assume that some table is growing without releasing unused elements or something like that. We were using samba 1.9.17p4 before migrating to samba 2.0.7 and did not have any similar problems! Environment of our test: ------------------------ Server: SunOS lux 5.6 Generic_105181-17 sun4u sparc SUNW,Ultra-4 Samba: 2.0.7 Smbclient: 1.9.17p4 Thank you in advance for any feedback. Best regards, Tine. -------------- next part -------------- #!/usr/bin/ksh #=============================================================# Description: # This script forces samba process to call reload_services() # over and over again. # # Usage: attach <pid> # <pid> is the pricess id of samba root process # # Contributor: Tine Smukavec <valentin.smukavec@hermes.si> # Updated: June 16, 2000 #============================================================= # # customize following variables to match your environment # conf_file=#path of smb.conf file user=#a_user password=#a_password server=#a_server ps_opts=#'-e -o pid -o ppid -o rss -o vsz -o comm' smb_port=#'-p 10206' max=1000 i=1 processID=$1 while [ $i -le $max ] do echo Pass: $i echo '====================================' ps $ps_opts | grep $processID touch $conf_file kill -1 $processID smbclient '\\'$server'\test_share' $password -U $user $smb_port > /dev/null <<EOF dir EOF i=`expr $i + 1` echo '\n' done -------------- next part -------------- [global] guest account = lmguest log file = /tmp/samba_test/bubu.%m lock directory = /tmp/samba_test/lock character set = iso8859-1 [test_share] path = /tmp/samba_test