Hi, Danial
I had modified ims_usrloc_pcscf/udomain.c about hash function and related
codes.
ex. via_host replaces with aor
aorhash = get_aor_hash(_d, &contact_info->aor, contact_info->via_port,
contact_info->via_prot);
//aorhash = get_aor_hash(_d, &contact_info->via_host,
contact_info->via_port, contact_info->via_prot);
//aorhash = get_aor_hash(_d, &contact_info->via_host,
contact_info->via_port, contact_info->via_prot);
//aorhash = get_aor_hash(_d, &contact_info->via_host,
contact_info->via_port, contact_info->via_prot);
When PCSCF DB is empty, it's OK.
But if there are data in PCSCF DB, the PCSCF process was crashed.
Below is the gdb content.
Could you help to find the problem?
Thanks.
(gdb) bt full
#0 0x00007f9a2c688fc3 in core_hash (s1=0x7f9a2c89e908 <ci.13657+8>,
s2=0x0, size=0)
at ../../hashes.h:276
p = 0x0
end = 0x0
v = 389295844
h = 0
#1 0x00007f9a2c68ac01 in get_aor_hash (_d=0x7f9a173436e0,
via_host=0x7f9a2c89e908 <ci.13657+8>, via_port=5080, via_proto=53877)
at usrloc.c:147
aorhash = 0
__FUNCTION__ = "get_aor_hash"
#2 0x00007f9a2c68a8a9 in get_hash_slot (_d=0x7f9a173436e0,
via_host=0x7f9a2c89e908 <ci.13657+8>, via_port=5080, via_proto=53877)
at usrloc.c:137
sl = 2000
__FUNCTION__ = "get_hash_slot"
#3 0x00007f9a2c66e9f4 in lock_udomain (_d=0x7f9a173436e0,
via_host=0x7f9a2c89e908 <ci.13657+8>, via_port=5080, via_proto=53877)
at udomain.c:273
sl = 0
#4 0x00007f9a2c67994d in preload_udomain (_c=0x7f9a2e3162f8,
_d=0x7f9a173436e0)
at udomain.c:866
ci = 0x7f9a2c89e900 <ci.13657>
row = 0x7f9a2e340210
columns = {0x7f9a2c89e2b0 <domain_col>, 0x7f9a2c89e2c0 <aor_col>,
0x7f9a2c89e2d0 <host_col>, 0x7f9a2c89e2e0 <port_col>,
0x7f9a2c89e2f0 <protocol_col>, 0x7f9a2c89e300 <received_col>,
0x7f9a2c89e310 <received_port_col>, 0x7f9a2c89e320
<received_proto_col>,
0x7f9a2c89e350 <rx_session_id_col>, 0x7f9a2c89e360
<reg_state_col>,
0x7f9a2c89e370 <expires_col>, 0x7f9a2c89e390 <socket_col>,
0x7f9a2c89e380 <service_routes_col>, 0x7f9a2c89e3a0
<public_ids_col>,
0x7f9a2c89e330 <path_col>}
res = 0x7f9a2e33ff40
aor = {s = 0xb83059 "sip:d4173c5dcbdd1529@172.28.20.225:5080
;transport=udp",
len = 53}
i = 0
n = 0
c = 0x7f9a2e335c20
__FUNCTION__ = "preload_udomain"
#5 0x00007f9a2c68852d in child_init (_rank=1) at ul_mod.c:249
ptr = 0x7f9a17342c70
__FUNCTION__ = "child_init"
#6 0x00000000005308c6 in init_mod_child (m=0x7f9a2e2fbcf0, rank=1) at
sr_module.c:921
__FUNCTION__ = "init_mod_child"
#7 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fbfa0, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#8 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fcc80, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#9 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fd260, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#10 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fd610, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#11 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fdc40, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#12 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fe158, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#13 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fe460, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#14 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2fedc8, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#15 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2ff418, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#16 0x00000000005305e3 in init_mod_child (m=0x7f9a2e2ffb48, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#17 0x00000000005305e3 in init_mod_child (m=0x7f9a2e3000f0, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
---Type <return> to continue, or q <return> to quit---
#18 0x00000000005305e3 in init_mod_child (m=0x7f9a2e300510, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#19 0x00000000005305e3 in init_mod_child (m=0x7f9a2e301898, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#20 0x00000000005305e3 in init_mod_child (m=0x7f9a2e302130, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#21 0x00000000005305e3 in init_mod_child (m=0x7f9a2e3026d8, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#22 0x00000000005305e3 in init_mod_child (m=0x7f9a2e302a50, rank=1) at
sr_module.c:918
__FUNCTION__ = "init_mod_child"
#23 0x0000000000530bfe in init_child (rank=1) at sr_module.c:947
No locals.
#24 0x0000000000485bd5 in fork_process (child_id=1,
desc=0x7ffe9c85acc0 "udp receiver child=0 sock=172.28.20.216:4060",
make_sock=1)
at pt.c:327
pid = 0
child_process_no = 1
ret = -1
new_seed1 = 570787820
new_seed2 = 1356713246
sockfd = {-1, -1}
__FUNCTION__ = "fork_process"
#25 0x000000000052024c in main_loop () at main.c:1586
i = 0
pid = 32766
si = 0x7f9a2e2f1f10
si_desc = "udp receiver child=0 sock=172.28.20.216:4060
\000\177\000\000$[d\000\000\000\000\000\b\000\000\000\000\000\000\000(,4\027\232\177\000\000\000\360\f\027\232\177\000\000P,4\027\232\177\000\000`\000\000\000\000\000\000\000`\255\205\234\001\000\000\000\230t\r\027\232\177\000\000`\255\205\234\376\177\000\000H\036\064.\232\177\000"
nrprocs = 8
woneinit = 0
__FUNCTION__ = "main_loop"
---Type <return> to continue, or q <return> to quit---
#26 0x0000000000527a79 in main (argc=7, argv=0x7ffe9c85b0d8) at main.c:2616
cfg_stream = 0xad6010
c = -1
r = 0
tmp = 0x7ffe9c85b818 ""
tmp_len = 0
port = 0
proto = 0
options = 0x74b160
":f:cm:M:dVIhEeb:l:L:n:vKrRDTN:W:w:t:u:g:P:G:SQ:O:a:A:x:X:"
ret = -1
seed = 2634858459
rfd = 4
debug_save = 0
debug_flag = 0
dont_fork_cnt = 0
n_lst = 0x0
p = 0x0
st = {st_dev = 19, st_ino = 72092, st_nlink = 2, st_mode = 16832,
st_uid = 0,
st_gid = 0, __pad0 = 0, st_rdev = 0, st_size = 40, st_blksize =
4096,
st_blocks = 0, st_atim = {tv_sec = 1532054497, tv_nsec =
553300960},
st_mtim = {tv_sec = 1532054692, tv_nsec = 531753344}, st_ctim = {
tv_sec = 1532054692, tv_nsec = 531753344}, __unused = {0, 0, 0}}
__FUNCTION__ = "main"
(gdb)
2018-07-16 15:54 GMT+08:00 Daniel-Constantin Mierla <miconda(a)gmail.com>om>:
Hello,
On 04.07.18 09:25, tyd wrote:
Dear all,
I'm trying Kamailio 5.1.4 and IMS module.
When registering to Kamailio IMS using the same ip and port for 30
users (different contact user part), the P-CSCF get the same hash
number and aor value.
The function get_aor_hash(_d, &_ci->via_host, _ci->via_port,
_ci->via_prot) in ims_usrloc_pcscf pcontact.c seems the problem.
Because hashing with host, port, prot will get the same hash value.
Anyone can help this ?
I am not using the ims module, but the hash id is typically
for speeding
up the searching, there can be collisions also for different values, so
I expect there is a matching rule on other attributes at some point, not
only the hash id.
Cheers,
Daniel
--
Daniel-Constantin Mierla --
www.asipto.com
www.twitter.com/miconda --
www.linkedin.com/in/miconda
Kamailio World Conference --
www.kamailioworld.com