Hi Dave and MF, Thanks for your help.
I have changed shoutdown_xxx to deinit_xxx, and it(deinit_xxx) seems to be called when I send -HUP to snmpd to reload config file this time. But there's a strange condition that deinit_xxx is called "twice" when I just send "one" -HUP to snmpd. (I add a printf in deinit_xxx() to know this result) I am really confused about this strange condition. Do you have any idea about this? Thanks, 永鈦鑫 iTAS Corporation 新竹市水源街75號 NO. 75,Shuiyuan St., Hsinchu City, Taiwan, R.O.C. Tel:03-5716099 Ext.1208 E-mail:[email protected] ----- Original Message ----- From: "Magnus Fromreide" <[email protected]> To: "Dave Shield" <[email protected]> Cc: "Tewen Hsieh" <[email protected]>; <[email protected]> Sent: Wednesday, June 03, 2009 6:14 AM Subject: Re: Does "killall -HUP snmpd" unload dynamic module? > On Tue, 2009-06-02 at 08:42 +0100, Dave Shield wrote: >> 2009/6/2 Tewen Hsieh <[email protected]>: >> > If there is malloc( ) in my dynamic module, does it cause any memory >> > leak >> > problem when I use "killall -HUP snmpd" to reload config file? >> >> That depends on your code. >> >> > Is the dynamic allocated memory freed by OS automatically? >> >> Only when the agent exits - not when it simply receives a signal. >> >> > Or I should free it by myself? >> >> When the agent re-loads the config file, it will call the 'shutdown_xxx' >> routine for each module (assuming that the module defines one). >> This is where you should release any dynmically allocated resources. > > This is actually wrong. > When the agent reloads the config file the shutdown methods won't be > called, they are only called on shutdown or dlmod module unloading but > in the latter case it is the deinit_xxx method that is called in older > agents (as Dave explains in later messages) and it is still the first > tried function in 5.5 even if shutdown_xxx is a better choice unless > there is a need to keep dlclose handling separate from shutdown > handling.. > > Reconfig is indicated by snmp callbacks - for trunk the following > sequnce is valid: > > 1. A callback is issued with the tags > (SNMP_CALLBACK_APPLICATION,SNMPD_CALLBACK_PRE_UPDATE_CONFIG) > 2. The free_config function that calls the cleanup procedures > registered with the configuration handlers are called. > 3. A callback indicating that all is cleared is issued with the > tags (SNMP_CALLBACK_LIBRARY,SNMP_CALLBACK_PRE_READ_CONFIG) > 4. The configuration file is reread for the normal config items - > note that the pre configuration items are kept ignored here. > 5. A callback to indicate that all configuration is read is issued > with the tags > (SNMP_CALLBACK_LIBRARY,SNMP_CALLBACK_POST_READ_CONFIG) > > /MF > >> Essentially, 'shutdown_xxx' should undo anything that was set up in >> the 'init_xxx' or config parsing routines. >> >> Dave >> >> ------------------------------------------------------------------------------ >> OpenSolaris 2009.06 is a cutting edge operating system for enterprises >> looking to deploy the next generation of Solaris that includes the latest >> innovations from Sun and the OpenSource community. Download a copy and >> enjoy capabilities such as Networking, Storage and Virtualization. >> Go to: http://p.sf.net/sfu/opensolaris-get >> _______________________________________________ >> Net-snmp-coders mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/net-snmp-coders > ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
