[Asterisk-code-review] res pjsip history: Add a module that provides PJSIP history ... (asterisk[13])

Mark Michelson asteriskteam at digium.com
Wed Dec 23 16:11:24 CST 2015


Mark Michelson has posted comments on this change.

Change subject: res_pjsip_history: Add a module that provides PJSIP history for debugging
......................................................................


Patch Set 4:

> > > SEGV when clearing history
 > > >
 > > > #0  0x00007fa9d5617a98 in __GI_raise (sig=sig at entry=6) at
 > > > ../sysdeps/unix/sysv/linux/raise.c:55
 > > > resultvar = 0
 > > > pid = 13507
 > > > selftid = 13562
 > > > #1  0x00007fa9d561969a in __GI_abort () at abort.c:89
 > > > save_stage = 2
 > > > act =
 > > > {__sigaction_handler = {sa_handler = 0x4, sa_sigaction = 0x4},
 > > > sa_mask = {__val = {15, 100, 140367316922624, 1275070859,
 > > > 140367459373056, 140367317571352, 692, 140367317572008,
 > > > 140364163543680, 6236192, 140367406460108, 140367407534744,
 > > > 140367407541920, 140365101272272, 2048, 140367407522878}},
 > > sa_flags
 > > > = -661794816, sa_restorer = 0x7fa9d01a1718}
 > > > sigs = {__val = {32, 0 <repeats 15 times>}}
 > > > #2  0x00007fa9d5610227 in __assert_fail_base (fmt=<optimized
 > > out>,
 > > > assertion=assertion at entry=0x7fa9d01a1718 "!\"Calling pjlib from
 > > > unknown/external thread. You must \" \"register external
 > threads
 > > > with pj_thread_register() \" \"before calling any pjlib
 > > > functions.\"", file=file at entry=0x7fa9d01a1593 "../src/pj/os_core_unix.c",
 > > > line=line at entry=692, function=function at entry=0x7fa9d01a19a8
 > > > <__PRETTY_FUNCTION__.5828> "pj_thread_this") at assert.c:92
 > > > str = 0x7fa94c000d40 "p\016"
 > > > total = 4096
 > > > #3  0x00007fa9d56102d2 in __GI___assert_fail (assertion=0x7fa9d01a1718
 > > > "!\"Calling pjlib from unknown/external thread. You must \"
 > > > \"register external threads with pj_thread_register() \"
 > \"before
 > > > calling any pjlib functions.\"", file=0x7fa9d01a1593
 > > > "../src/pj/os_core_unix.c", line=692, function=0x7fa9d01a19a8
 > > > <__PRETTY_FUNCTION__.5828> "pj_thread_this") at assert.c:101
 > > > #4  0x00007fa9d0190229 in  () at /lib64/libpj.so.2
 > > > #5  0x00007fa9d01903fd in pj_mutex_lock () at /lib64/libpj.so.2
 > > > #6  0x00007fa9d0198658 in cpool_release_pool () at
 > > > /lib64/libpj.so.2
 > > > #7  0x00007fa913fb0c55 in pjsip_history_entry_dtor
 > > > (obj=0x7fa94400e560) at res_pjsip_history.c:608
 > > > entry = 0x7fa94400e560
 > > > #8  0x0000000000459d22 in __ao2_ref (func=<synthetic pointer>,
 > > > line=516, file=0x5fc6eb "astobj2.c", delta=-1,
 > user_data=<optimized
 > > > out>)
 > > > at astobj2.c:445
 > > > obj_mutex = <optimized out>
 > > > obj_rwlock = <optimized out>
 > > > current_value = 0
 > > > #9  0x0000000000459d22 in __ao2_ref (user_data=0x7fa94400e560,
 > > > delta=delta at entry=-1) at astobj2.c:516
 > > > #10 0x00007fa913fb1199 in pjsip_set_history (entry=<optimized
 > > out>)
 > > > at res_pjsip_history.c:709
 > > > idx = 0
 > > > what = <optimized out>
 > > > #11 0x00007fa913fb1199 in pjsip_set_history () at
 > > res_pjsip_history.c:716
 > > > idx = 0
 > > > what = <optimized out>
 > > > #12 0x00007fa913fb1199 in pjsip_set_history (e=<optimized out>,
 > > > cmd=<optimized out>, a=0x7fa9d0103330) at res_pjsip_history.c:1281
 > > > what = <optimized out>
 > > > #13 0x00000000004d0b71 in ast_cli_command_full
 > (uid=uid at entry=1004,
 > > > gid=gid at entry=500, fd=fd at entry=15, s=s at entry=0x7fa9d0103630
 > > "pjsip
 > > > set history clear") at cli.c:2723
 > > > args =
 > > > {0x7fa9141b7260 <cli_pjsip> "\240\273\"\001", 0x7fa94c0014e0
 > > > "pjsip", 0x7fa94c0014e6 "set", 0x7fa94c0014ea "history",
 > > > 0x7fa94c0014f2 "clear", 0x0 <repeats 36 times>, 0x7fa9d889d374
 > > > <check_match+228> "\211\302H\211؅\322t\330\353\301\220H\205\300t͋T$0D\211\341\301\341\036\301\371\037\203\301\003\017\267\024PH\211؉ց\346\377\177",
 > > > 0x0, 0x7fa9d889d374 <check_match+228> "\211\302H\211؅\322t\330\353\301\220H\205\300t͋T$0D\211\341\301\341\036\301\371\037\203\301\003\017\267\024PH\211؉ց\346\377\177",
 > > > 0x7fa9d63a2b28 "P\265\250\020\003\v\202\260\366\062\254\237",
 > > > <incomplete sequence \345\236>, 0x7fa9d8a5f9a0 "",
 > 0x7fa9d55e58d4
 > > > "\350DmwK\217}\365\260\037\313\376\001\062\215\062\061\363\360UD\366H\023\v\222\210\353\026\337l\\\214w\035Oc\241V\216\244\275s\r\207\037\205\374\320\353㝀\020ؽ{\350V\216\366\247\333\001y\213\207---Type
 > > > <retur
 > >
 > > oooo. Cool.
 > >
 > > How did you do that?
 > 
 > Ah, nevermind. I see it here:
 > 
 > #3 0x00007fa9d56102d2 in __GI___assert_fail (assertion=0x7fa9d01a1718
 > "!\"Calling pjlib from unknown/external thread. You must \"
 > \"register external threads with pj_thread_register() \" \"before
 > calling any pjlib functions.\"", file=0x7fa9d01a1593
 > 
 > I'm not sure, but I suspect I'm running without assertions enabled.
 > I'll have to re-enable and check a few different areas.

Another possibility is that if you run Asterisk with the -c flag, then the console thread will be registered with PJLIB. If you run Asterisk in daemon mode, then when you attach and try to run CLI commands, then the CLI command will not run in a thread that is registered with PJLIB.

-- 
To view, visit https://gerrit.asterisk.org/1849
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36
Gerrit-PatchSet: 4
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Matt Jordan <mjordan at digium.com>
Gerrit-Reviewer: George Joseph <george.joseph at fairview5.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
Gerrit-Reviewer: Matt Jordan <mjordan at digium.com>
Gerrit-HasComments: No



More information about the asterisk-code-review mailing list