Revision: 5933
http://openser.svn.sourceforge.net/openser/?rev=5933&view=rev
Author: mariuszbihlei
Date: 2009-10-06 14:02:16 +0000 (Tue, 06 Oct 2009)
Log Message:
-----------
Changes to documentation of carrierroute module:
changed cr_route usage in example as it didn't matched the actual interface
by removing the crc32 parameter.
Modified Paths:
--------------
branches/1.5/modules/carrierroute/README
branches/1.5/modules/carrierroute/doc/carrierroute_admin.xml
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 5932
http://openser.svn.sourceforge.net/openser/?rev=5932&view=rev
Author: mariuszbihlei
Date: 2009-10-06 14:00:57 +0000 (Tue, 06 Oct 2009)
Log Message:
-----------
Changes to documentation of carrierroute module:
changed cr_route usage in example as it didn't matched the actual interface
by removing the crc32 parameter.
Modified Paths:
--------------
branches/1.4/modules/carrierroute/README
branches/1.4/modules/carrierroute/doc/carrierroute_admin.xml
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 5931
http://openser.svn.sourceforge.net/openser/?rev=5931&view=rev
Author: mariuszbihlei
Date: 2009-10-06 13:54:25 +0000 (Tue, 06 Oct 2009)
Log Message:
-----------
Changes to documentation of carrierroute module:
changed cr_route usage in example as it didn't matched the actual interface
by removing the crc32 parameter.
Modified Paths:
--------------
trunk/modules/carrierroute/README
trunk/modules/carrierroute/doc/carrierroute_admin.xml
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Hi all,
i get now a segfault in cfg_update[_local] for kamailio modules during my
tests. It doesn't matter if the server start successfully, it even crashs when
the server stops the start during some cfg file problems.
I remember that Miklos changes in the last week something in the cfg
framework, perhaps its related to this? The cfg in question does nothing
special, it just try to loads a bunch of kamailio modules, but as i said, it
crashes for every configuration i've tried so far.
Backtrace:
Core was generated by `../../ser -w . -f 2.cfg'.
Program terminated with signal 11, Segmentation fault.
[New process 16270]
#0 cfg_update_local () at cfg/cfg_struct.h:255
255 cfg_child_cb = cfg_child_cb->next;
(gdb) bt
#0 cfg_update_local () at cfg/cfg_struct.h:255
#1 0x0809c050 in sig_usr (signo=15) at main.c:782
#2 <signal handler called>
#3 0xb7fd742e in __kernel_vsyscall ()
#4 0xb7f11e03 in __read_nocancel () from /lib/tls/i686/cmov/libc.so.6
#5 0xb7ea8f4e in _IO_new_file_underflow (fp=0x98e98e0) at fileops.c:598
#6 0xb7eaacab in _IO_default_uflow (fp=0x98e98e0) at genops.c:440
#7 0xb7eac262 in *__GI___uflow (fp=0x98e98e0) at genops.c:394
#8 0xb7e9ea36 in _IO_getline_info (fp=0x98e98e0, buf=0x82b40b4 "�\003",
n=1023, delim=10, extract_delim=1, eof=0x0) at iogetline.c:74
#9 0xb7e9e981 in _IO_getline (fp=0x98e98e0, buf=0x82b40b4 "�\003", n=1023,
delim=10, extract_delim=1) at iogetline.c:42
#10 0xb7e9d86a in _IO_fgets (buf=0x82b40b4 "�\003", n=1024, fp=0x98e98e0) at
iofgets.c:58
#11 0xb7c4769f in mi_read_line (b=0x82b40b4 "�\003", max=1024,
stream=0x98e98e0, read=0xbfef22f8) at /usr/include/bits/stdio2.h:255
#12 0xb7c48957 in mi_fifo_server (fifo_stream=0x98e98e0) at fifo_fnc.c:415
#13 0xb7c4ad48 in fifo_process (rank=1) at mi_fifo.c:235
#14 0xb7c4afbd in mi_child_init (rank=0) at mi_fifo.c:199
#15 0x081099e7 in init_mod_child (m=0x82ac28c, rank=0) at sr_module.c:808
#16 0x08109970 in init_mod_child (m=0x82ac3dc, rank=0) at sr_module.c:785
#17 0x08109970 in init_mod_child (m=0x82ac528, rank=0) at sr_module.c:785
#18 0x08109970 in init_mod_child (m=0x82ac680, rank=0) at sr_module.c:785
#19 0x08109970 in init_mod_child (m=0x82ac7c8, rank=0) at sr_module.c:785
#20 0x08109970 in init_mod_child (m=0x82ac910, rank=0) at sr_module.c:785
#21 0x08109970 in init_mod_child (m=0x82aca68, rank=0) at sr_module.c:785
#22 0x08109970 in init_mod_child (m=0x82acbac, rank=0) at sr_module.c:785
#23 0x08109970 in init_mod_child (m=0x82acd00, rank=0) at sr_module.c:785
#24 0x08109970 in init_mod_child (m=0x82ace44, rank=0) at sr_module.c:785
#25 0x08109970 in init_mod_child (m=0x82acf88, rank=0) at sr_module.c:785
#26 0x08109970 in init_mod_child (m=0x82ad0e0, rank=0) at sr_module.c:785
#27 0x08109970 in init_mod_child (m=0x82ad2dc, rank=0) at sr_module.c:785
#28 0x08109970 in init_mod_child (m=0x82ad3d0, rank=0) at sr_module.c:785
#29 0x08109970 in init_mod_child (m=0x82ad570, rank=0) at sr_module.c:785
#30 0x08109970 in init_mod_child (m=0x82ad6c0, rank=0) at sr_module.c:785
#31 0x08109970 in init_mod_child (m=0x82ad810, rank=0) at sr_module.c:785
#32 0x08109970 in init_mod_child (m=0x82ad974, rank=0) at sr_module.c:785
#33 0x08109970 in init_mod_child (m=0x82adb28, rank=0) at sr_module.c:785
#34 0x08109970 in init_mod_child (m=0x82adc84, rank=0) at sr_module.c:785
#35 0x08109970 in init_mod_child (m=0x82adf6c, rank=0) at sr_module.c:785
#36 0x08109970 in init_mod_child (m=0x82b0564, rank=0) at sr_module.c:785
#37 0x08109970 in init_mod_child (m=0x82b0658, rank=0) at sr_module.c:785
#38 0x08109970 in init_mod_child (m=0x82b07fc, rank=0) at sr_module.c:785
#39 0x08109970 in init_mod_child (m=0x82b2398, rank=0) at sr_module.c:785
#40 0x0809b6bd in main_loop () at main.c:1504
#41 0x0809e10d in main (argc=5, argv=0xbfef2bf4) at main.c:2228
(gdb) p cfg_child_cb
$1 = (cfg_child_cb_t *) 0x0
(gdb) l
250 if (unlikely(cfg_child_cb==CFG_NO_CHILD_CBS))
251 return;
252 /* call the per-process callbacks */
253 while (cfg_child_cb != last_cb) {
254 prev_cb = cfg_child_cb;
255 cfg_child_cb = cfg_child_cb->next;
256 atomic_inc(&cfg_child_cb->refcnt);
257 if (atomic_dec_and_test(&prev_cb->refcnt)) {
258 /* No more pocess refers to this callback.
259 Did this process block the deletion,
Regards,
Henning
Hello,
I want to introduce SIP Router Development Meeting 2009 planned for
Friday, October 2 in Berlin, Germany. More details about the event at:
http://sip-router.org/2009/09/14/development-meeting-2009/
Shortly, the goal of the meeting is to analyze the evolution so far,
discuss the plans for the future and socialize within the community. The
integration between SER and Kamailio is 99% done (only seas module needs
some work), first major release based on SIP router core is due in about
one month: Kamailio 3.0, today being the date of going into testing phase.
Participation is free for anybody upon registration via email at:
registration(a)lists.sip-router.org
Feel free to submit suggestions for discussion topics, presentations and
event extensions. A hacking session is already proposed, now just show
your interest.
For general questions about the meeting (and/or hacking session), please
address them to: sr-dev(a)lists.sip-router.org
See you in Berlin!
Cheers,
Daniel
--
Daniel-Constantin Mierla
* http://www.asipto.com/
Module: sip-router
Branch: master
Commit: 5c323052cc0a84d8a7c98ffe0354071dc00be23f
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5c32305…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Tue Oct 6 12:47:14 2009 +0200
cfg framework: fix shutdown crash for non registered modules
Added cfg_update_no_cbs() which partially updates (no per-child
callbacks are called) the local config.
It's needed for config update on exit (SIGTERM) for modules that
do not register as cfg users and when the code is compiled with
SIG_DEBUG.
---
cfg/cfg_struct.h | 18 +++++++++++++++---
main.c | 6 +++++-
2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/cfg/cfg_struct.h b/cfg/cfg_struct.h
index 0eafc51..0be608e 100644
--- a/cfg/cfg_struct.h
+++ b/cfg/cfg_struct.h
@@ -219,8 +219,10 @@ static inline void cfg_block_free(cfg_block_t *block)
/* updates all the module handles and calls the
* per-child process callbacks -- not intended to be used
* directly, use cfg_update() instead!
+ * params:
+ * no_cbs - if 1, do not call per child callbacks
*/
-static inline void cfg_update_local(void)
+static inline void cfg_update_local(int no_cbs)
{
cfg_group_t *group;
cfg_child_cb_t *last_cb;
@@ -247,7 +249,7 @@ static inline void cfg_update_local(void)
)
*(group->handle) = cfg_local->vars + group->offset;
- if (unlikely(cfg_child_cb==CFG_NO_CHILD_CBS))
+ if (unlikely(cfg_child_cb==CFG_NO_CHILD_CBS || no_cbs))
return;
/* call the per-process callbacks */
while (cfg_child_cb != last_cb) {
@@ -287,7 +289,17 @@ static inline void cfg_update_local(void)
#define cfg_update() \
do { \
if (unlikely(cfg_local != *cfg_global)) \
- cfg_update_local(); \
+ cfg_update_local(0); \
+ } while(0)
+
+/* like cfg_update(), but does not execute callbacks
+ * (it should be used sparingly only in special cases, since it
+ * breaks an important cfg framework feature)
+ */
+#define cfg_update_no_cbs() \
+ do { \
+ if (unlikely(cfg_local != *cfg_global)) \
+ cfg_update_local(1); \
} while(0)
/* searches a group by name */
diff --git a/main.c b/main.c
index 47d8ccc..fb9ba93 100644
--- a/main.c
+++ b/main.c
@@ -779,7 +779,11 @@ void sig_usr(int signo)
LOG(L_INFO, "INFO: signal %d received\n", signo);
/* print memory stats for non-main too */
#ifdef PKG_MALLOC
- cfg_update(); /* make sure we have current values */
+ /* make sure we have current cfg values, but update only
+ the safe part (values not requiring callbacks), to
+ account for processes that might not have registered
+ config support */
+ cfg_update_no_cbs();
memlog=cfg_get(core, core_cfg, memlog);
if (memlog <= cfg_get(core, core_cfg, debug)){
if (cfg_get(core, core_cfg, mem_summary) & 1) {