[OpenSIPS-Devel] [ opensips-Bugs-3585696 ] mi_xmlrpc does not support latest versions of libxmlrpc-c3
SourceForge.net
noreply at sourceforge.net
Mon Jan 28 12:07:27 CET 2013
Bugs item #3585696, was opened at 2012-11-09 03:39
Message generated for change (Settings changed) made by bogdan_iancu
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=1086410&aid=3585696&group_id=232389
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: None
Status: Open
Resolution: None
>Priority: 3
Private: No
Submitted By: Digipigeon (digipigeon)
>Assigned to: Razvan Crainea (razvancrainea)
Summary: mi_xmlrpc does not support latest versions of libxmlrpc-c3
Initial Comment:
I am getting repeated crashing on my three X 1.8.2 opensips servers, also some crashing on my 1.7.1.
The problem appears to be more noticeable when the profile_get_values is called frequently (every few seconds), however I cant confirm isolation of this command causes the crash.
Please see attached (gdb) bt full
----------------------------------------------------------------------
Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2012-12-17 11:34
Message:
As an update here, for everyone.
The problem seems to be generated by the newest versions of libxmlrpc-c3
library (over 1.06.42) - just vesrion do not properly work against
opensips, because the threads usage -> this leads the memory corruption in
opensips.
We will need to rework the mi_xmlrpc module to support also the new
versions, or at least not to compile / link against them.
Regards,
Bogdan
----------------------------------------------------------------------
Comment By: Digipigeon (digipigeon)
Date: 2012-11-09 13:52
Message:
Hi Bogdan,
The results of your requested commands is as follows:
(gdb) f 1
#1 add_mi_node_child (value_len=26, value=<optimised out>,
name_len=<optimised out>, name=<optimised out>, flags=2, parent=<optimised
out>) at mi/tree.c:219
219 return add_next(parent->kids, name, name_len,
value, value_len, flags);
(gdb) p parent
$1 = <optimised out>
(gdb) p *parent
value has been optimised out
(gdb) f 4
#4 mi_get_stats (cmd=<optimised out>, param=<optimised out>) at
statistics.c:535
535 if (mi_add_module_stats( rpl,
&collector->amodules[i] )!=0)
(gdb) p *rpl
$2 = {value = {s = 0x2 <Address 0x2 out of bounds>, len = 0}, name = {s =
0x0, len = -840856056}, flags = 0, kids = 0x7663723a65726f63, next =
0x7365696c7065725f,
last = 0x3730393134203d20, attributes = 0x33}
The dump is 2.1GB, I will get this somewhere you can access it.
Kind Regards
Jonathan
----------------------------------------------------------------------
Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2012-11-09 13:34
Message:
Ok, it seems the "brother" pointer is overwritten - the pointer is not a
valid mem addrs, but decoded as hexa is "core:rcv" which is a statistic
name.
Please try more:
f 1
p parent
p *parent
f 4
p *rpl
Also is there any why to get access to the core to speed up the debugging
?
Regards,
----------------------------------------------------------------------
Comment By: Digipigeon (digipigeon)
Date: 2012-11-09 13:12
Message:
Hi Bogdan,
Thanks for the explanation. Please see the following output:
(gdb) f 0
#0 add_next (flags=2, value_len=26, value=<optimised out>,
name_len=<optimised out>, name=<optimised out>, brother=0x7663723a65726f63)
at mi/tree.c:184
184 brother->last->next = new;
(gdb) p brother
$1 = (struct mi_node *) 0x7663723a65726f63
(gdb) p *brother
Cannot access memory at address 0x7663723a65726f63
(gdb) p name
$2 = <optimised out>
(gdb) p value
$3 = <optimised out>
(gdb) p *brother->name
Structure has no component named operator*.
Kind Regards
Jonathan.
----------------------------------------------------------------------
Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2012-11-09 12:42
Message:
Jonathan,
Once you are in gdb, run the commands:
f 0
p brother
p *brother
p name
p value
p *brother->name
Regards,
Bogdan
----------------------------------------------------------------------
Comment By: Digipigeon (digipigeon)
Date: 2012-11-09 11:40
Message:
Hi Bogdan,
There was nothing in the log files relevant, it just crashes without any
response.
I am not sure if I have correctly ran the commands, but I get the
following:
(gdb) f 0 brother
#0 0x7663723a65726f63 in ?? ()
(gdb) f 0 *brother
Cannot access memory at address 0x7663723a65726f63
(gdb) f 0 name
value has been optimised out
(gdb) f 0 value
value has been optimised out
(gdb) f 0 *brother->next
Cannot access memory at address 0x7663723a65726f93
Sorry if this is not correct.
Kind Regards
Jonathan
----------------------------------------------------------------------
Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2012-11-09 09:32
Message:
Hi,
1) do you see in the logs any err message before the crash (from the same
process) ?
2) in gdb, frame 0, please print : brother, *brother, name, value,
*brother->next .
Thanks and regards,
Bogdan
----------------------------------------------------------------------
Comment By: Digipigeon (digipigeon)
Date: 2012-11-09 07:09
Message:
The only parameter that I have programmed in for get_statistics is the
parameter "all", this is ran through xmlrpc
----------------------------------------------------------------------
Comment By: Razvan Crainea (razvancrainea)
Date: 2012-11-09 06:22
Message:
Hi!
The core you attached does not contain any indications that the cause of
the crash are the dialog profiles, but rather some statistics you are
fetching through MI. Can you provide us the exact MI command you are
running?
Best regards,
Răzvan
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=1086410&aid=3585696&group_id=232389
More information about the Devel
mailing list