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

Matt Jordan asteriskteam at digium.com
Thu Dec 24 12:37:49 CST 2015


Matt Jordan 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.

Interesting; I didn't know that. I suspect that is what was happening.

-- 
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