[asterisk-bugs] [JIRA] (ASTERISK-26987) Asterisk crashes when unloading module pbx_dundi.so with dundi peers

Kirsty Tyerman (JIRA) noreply at issues.asterisk.org
Sun May 7 22:10:57 CDT 2017


     [ https://issues.asterisk.org/jira/browse/ASTERISK-26987?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kirsty Tyerman updated ASTERISK-26987:
--------------------------------------

    Description: 
I have compiled Asterisk 13.9.1 on a Fedora 25 Workstation.

I have configured "dundi.conf" with one dundi peer as follows, using my local ip address as the bindaddr.
{noformat}
[general]
entityid=11:11:11:de:af:1
bindaddr=192.168.122.21
cachetime=5
ttl=32
tos=cs5
autokill=no

[11:11:11:00:a1:1]
model=symmetric
include=all
host=192.168.122.22
permit=all
qualify=30000
{noformat}

When I try to unload the dundi module (module unload pbx_dundi.so), asterisk crashes with a segmentation fault as follows:
{noformat}
*CLI> module unload pbx_dundi.so 
 Unloading pbx_dundi.so
  == Unregistered custom function DUNDILOOKUP
  == Unregistered custom function DUNDIQUERY
  == Unregistered custom function DUNDIRESULT
[Thread 0x7fff6a33d700 (LWP 27801) exited]
[Thread 0x7fff6a2c1700 (LWP 27802) exited]
[Thread 0x7fff6a245700 (LWP 27803) exited]

Thread 1 "asterisk" received signal SIGSEGV, Segmentation fault.
0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
311		return h->cur_len;
(gdb) where
#0  0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
#1  0x00000000005bc45e in sched_find (con=0xc9ed90, id=1) at sched.c:582
#2  0x00000000005bc59f in ast_sched_del (con=0xc9ed90, id=1) at sched.c:634
#3  0x00007fff8761123b in destroy_peer (peer=0x12a3150) at pbx_dundi.c:4333
#4  0x00007fff87611426 in prune_peers () at pbx_dundi.c:4354
#5  0x00007fff87614456 in unload_module () at pbx_dundi.c:4987
#6  0x0000000000537a9f in ast_unload_resource (resource_name=0x12ca50e "pbx_dundi.so", force=AST_FORCE_SOFT)
    at loader.c:704
#7  0x00000000004d2392 in handle_unload (e=0x8b3048 <cli_cli+3400>, cmd=-4, a=0x7fffffffb920) at cli.c:769
#8  0x00000000004d87be in ast_cli_command_full (uid=-1, gid=-1, fd=1, s=0xb18a10 "module unload pbx_dundi.so ")
    at cli.c:2757
#9  0x0000000000455301 in consolehandler (s=0xb18a10 "module unload pbx_dundi.so ") at asterisk.c:2328
#10 0x000000000045c132 in asterisk_daemon (isroot=1, runuser=0x0, rungroup=0x0) at asterisk.c:4797
#11 0x000000000045af76 in main (argc=2, argv=0x7fffffffe0b8) at asterisk.c:4289
{noformat}

If i remove qualify from the dundi peer and then load and unload the pbx_dundi.so module asterisk does not crash.

*STEPS TO REPRODUCE*
1. dnf install asterisk-13.9.1
2. use dundi.conf file supplied in attatchments (edit bindaddr to match local ip address)
3. start asterisk
4. connect to the asterisk CLI
5. module unload pbx_dundi.so

  was:
I have compiled Asterisk 13.9.1 on a Fedora 25 Workstation.

I have configured "dundi.conf" with one dundi peer as follows, using my local ip address as the bindaddr.
{noformat}
[general]
entityid=11:11:11:de:af:1
bindaddr=192.168.122.21
cachetime=5
ttl=32
tos=cs5
autokill=no

[11:11:11:00:a1:1]
model=symmetric
include=all
host=172.16.66.1
permit=all
qualify=30000
{noformat}

When I try to unload the dundi module (module unload pbx_dundi.so), asterisk crashes with a segmentation fault as follows:
{noformat}
*CLI> module unload pbx_dundi.so 
 Unloading pbx_dundi.so
  == Unregistered custom function DUNDILOOKUP
  == Unregistered custom function DUNDIQUERY
  == Unregistered custom function DUNDIRESULT
[Thread 0x7fff6a33d700 (LWP 27801) exited]
[Thread 0x7fff6a2c1700 (LWP 27802) exited]
[Thread 0x7fff6a245700 (LWP 27803) exited]

Thread 1 "asterisk" received signal SIGSEGV, Segmentation fault.
0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
311		return h->cur_len;
(gdb) where
#0  0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
#1  0x00000000005bc45e in sched_find (con=0xc9ed90, id=1) at sched.c:582
#2  0x00000000005bc59f in ast_sched_del (con=0xc9ed90, id=1) at sched.c:634
#3  0x00007fff8761123b in destroy_peer (peer=0x12a3150) at pbx_dundi.c:4333
#4  0x00007fff87611426 in prune_peers () at pbx_dundi.c:4354
#5  0x00007fff87614456 in unload_module () at pbx_dundi.c:4987
#6  0x0000000000537a9f in ast_unload_resource (resource_name=0x12ca50e "pbx_dundi.so", force=AST_FORCE_SOFT)
    at loader.c:704
#7  0x00000000004d2392 in handle_unload (e=0x8b3048 <cli_cli+3400>, cmd=-4, a=0x7fffffffb920) at cli.c:769
#8  0x00000000004d87be in ast_cli_command_full (uid=-1, gid=-1, fd=1, s=0xb18a10 "module unload pbx_dundi.so ")
    at cli.c:2757
#9  0x0000000000455301 in consolehandler (s=0xb18a10 "module unload pbx_dundi.so ") at asterisk.c:2328
#10 0x000000000045c132 in asterisk_daemon (isroot=1, runuser=0x0, rungroup=0x0) at asterisk.c:4797
#11 0x000000000045af76 in main (argc=2, argv=0x7fffffffe0b8) at asterisk.c:4289
{noformat}

If i remove qualify from the dundi peer and then load and unload the pbx_dundi.so module asterisk does not crash.

*STEPS TO REPRODUCE*
1. dnf install asterisk-13.9.1
2. use dundi.conf file supplied in attatchments (edit bindaddr to match local ip address)
3. start asterisk
4. connect to the asterisk CLI
5. module unload pbx_dundi.so


> Asterisk crashes when unloading module pbx_dundi.so with dundi peers
> --------------------------------------------------------------------
>
>                 Key: ASTERISK-26987
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-26987
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: PBX/pbx_dundi
>    Affects Versions: 13.9.1
>         Environment: Fedora 25
>            Reporter: Kirsty Tyerman
>         Attachments: backtrace_dundi_unload.txt, dundi.conf
>
>
> I have compiled Asterisk 13.9.1 on a Fedora 25 Workstation.
> I have configured "dundi.conf" with one dundi peer as follows, using my local ip address as the bindaddr.
> {noformat}
> [general]
> entityid=11:11:11:de:af:1
> bindaddr=192.168.122.21
> cachetime=5
> ttl=32
> tos=cs5
> autokill=no
> [11:11:11:00:a1:1]
> model=symmetric
> include=all
> host=192.168.122.22
> permit=all
> qualify=30000
> {noformat}
> When I try to unload the dundi module (module unload pbx_dundi.so), asterisk crashes with a segmentation fault as follows:
> {noformat}
> *CLI> module unload pbx_dundi.so 
>  Unloading pbx_dundi.so
>   == Unregistered custom function DUNDILOOKUP
>   == Unregistered custom function DUNDIQUERY
>   == Unregistered custom function DUNDIRESULT
> [Thread 0x7fff6a33d700 (LWP 27801) exited]
> [Thread 0x7fff6a2c1700 (LWP 27802) exited]
> [Thread 0x7fff6a245700 (LWP 27803) exited]
> Thread 1 "asterisk" received signal SIGSEGV, Segmentation fault.
> 0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
> 311		return h->cur_len;
> (gdb) where
> #0  0x0000000000527362 in ast_heap_size (h=0x0) at heap.c:311
> #1  0x00000000005bc45e in sched_find (con=0xc9ed90, id=1) at sched.c:582
> #2  0x00000000005bc59f in ast_sched_del (con=0xc9ed90, id=1) at sched.c:634
> #3  0x00007fff8761123b in destroy_peer (peer=0x12a3150) at pbx_dundi.c:4333
> #4  0x00007fff87611426 in prune_peers () at pbx_dundi.c:4354
> #5  0x00007fff87614456 in unload_module () at pbx_dundi.c:4987
> #6  0x0000000000537a9f in ast_unload_resource (resource_name=0x12ca50e "pbx_dundi.so", force=AST_FORCE_SOFT)
>     at loader.c:704
> #7  0x00000000004d2392 in handle_unload (e=0x8b3048 <cli_cli+3400>, cmd=-4, a=0x7fffffffb920) at cli.c:769
> #8  0x00000000004d87be in ast_cli_command_full (uid=-1, gid=-1, fd=1, s=0xb18a10 "module unload pbx_dundi.so ")
>     at cli.c:2757
> #9  0x0000000000455301 in consolehandler (s=0xb18a10 "module unload pbx_dundi.so ") at asterisk.c:2328
> #10 0x000000000045c132 in asterisk_daemon (isroot=1, runuser=0x0, rungroup=0x0) at asterisk.c:4797
> #11 0x000000000045af76 in main (argc=2, argv=0x7fffffffe0b8) at asterisk.c:4289
> {noformat}
> If i remove qualify from the dundi peer and then load and unload the pbx_dundi.so module asterisk does not crash.
> *STEPS TO REPRODUCE*
> 1. dnf install asterisk-13.9.1
> 2. use dundi.conf file supplied in attatchments (edit bindaddr to match local ip address)
> 3. start asterisk
> 4. connect to the asterisk CLI
> 5. module unload pbx_dundi.so



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list