We are having several customers with crashes during calls to RPC permissions.trustedReload
even after introducing the basic safety for concurrent RPC reload c87f520
It seems that we need to implement locking in order to be sure the memory is not gone in the middle of a read.
It's quite difficult to reproduce since match_hash_table
call has to happen during a RPC reload
(gdb) bt full
#0 match_hash_table (table=<optimized out>, msg=msg@entry=0x7fc3d800a808, src_ip_c_str=src_ip_c_str@entry=0x7fc3d7f217b8 "A.A.A.A", proto=proto@entry=1,
from_uri=from_uri@entry=0x7fc3d7f1b750 "sip:fake@B.B.B.B") at hash.c:280
__func__ = "match_hash_table"
ruri = <optimized out>
ruri_string = "sip:41584006001@B.B.B.B:5060\000\264{\224\377\177\000\000\000\240\200\331\302\177\000\000\300\000\000\000\000\000\000\000\332\003\000\000\000\000\000\000\300\067~\372PV\000\000\000\220
\324m,\233߁\260\341D\334\302\177\000\000\260go\372PV\000\000P\343!\332\302\177\000\000\004\340{\372PV\000\000`;~\372PV\000\000\300\067~\372PV\000\000@\024\000\000\000\000\000\000`\342!\332\302\177\000\000\001\00
0\000\000\000\000\000\000\310\066\204\331\302\177\000\000\000\240\200\331\302\177\000\000\300\000\000\000\000\000\000\000\300\067~\372PV\000\000`;~\372PV\000\000\332\003\000\000\000\000\000\000\000"...
preg = {__buffer = 0x0, __allocated = 0, __used = 224, __syntax = 16843462, __fastmap = 0x0, __translate = 0x0, re_nsub = 0, __can_be_null = 0, __regs_allocated = 0, __fastmap_accurate = 1,
__no_sub = 1, __not_bol = 0, __not_eol = 0, __newline_anchor = 0}
np = 0x455449564e492035
src_ip = {s = 0x7fc3d7f217b8 "A.A.A.A", len = <optimized out>}
val = <optimized out>
count = 0
#1 0x00007fc3d2362765 in allow_trusted (msg=msg@entry=0x7fc3d800a808, src_ip=0x7fc3d7f217b8 "A.A.A.A", proto=proto@entry=1, from_uri=from_uri@entry=0x7fc3d7f1b750 "sip:fake@B.B.B.B")
at trusted.c:499
__func__ = "allow_trusted"
result = <optimized out>
res = 0x0
keys = {0x7fc3d7f1b750}
vals = {{type = 3595139888, nul = 32707, free = -671045624, val = {int_val = -1803829520, ll_val = 140735684525808, double_val = 6.9532666868153257e-310, time_val = 140735684525808,
string_val = 0x7fff947bbef0 "\001", str_val = {s = 0x7fff947bbef0 "\001", len = -94468017}, blob_val = {s = 0x7fff947bbef0 "\001", len = -94468017}, bitmap_val = 2491137776,
uint_val = 2491137776, ull_val = 140735684525808}}}
cols = {0x0, 0x5650fa650c25 <pv_printf+229>, 0x7fff947bb670, 0x0}
#2 0x00007fc3d2363ef3 in allow_trusted_furi (_msg=_msg@entry=0x7fc3d800a808, _src_ip_sp=_src_ip_sp@entry=0x7fc3d6494340 "xEI\326\303\177", _proto_sp=_proto_sp@entry=0x7fc3d64925e0 "\330\375H\326\303\177",
from_uri=0x7fc3d7f1b750 "sip:fake@B.B.B.B") at trusted.c:590
src_ip = {s = 0x7fc3d7f217b8 "A.A.A.A", len = 11}
proto = {s = 0x7fc3d7f27820 "udp", len = 3}
proto_int = 1
__func__ = "allow_trusted_furi"
#3 0x00007fc3d23647d0 in allow_trusted_3 (_msg=0x7fc3d800a808, _src_ip_sp=0x7fc3d6494340 "xEI\326\303\177", _proto_sp=0x7fc3d64925e0 "\330\375H\326\303\177", _from_uri=<optimized out>) at trusted.c:634
from_uri = {s = 0x7fc3d7f1b750 "sip:fake@B.B.B.B", len = 34}
__func__ = "allow_trusted_3"
#4 0x00005650fa513319 in do_action (h=h@entry=0x7fff947bbef0, a=a@entry=0x7fc3d6497b30, msg=msg@entry=0x7fc3d800a808) at core/action.c:1085
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.