[asterisk-bugs] [JIRA] (ASTERISK-24805) ASAN: Race condition (heap-use-after-free) on asterisk closing
Corey Farrell (JIRA)
noreply at issues.asterisk.org
Fri Feb 20 21:25:34 CST 2015
[ https://issues.asterisk.org/jira/browse/ASTERISK-24805?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Corey Farrell updated ASTERISK-24805:
-------------------------------------
Attachment: ASTERISK-24805.patch
This patch changes the cleanup for pbx.c so it only happens for graceful shutdown. It should resolve this issue. During 'core stop now' or ctrl-c, modules like chan_sip are not shutdown, so pbx.c needs to skip shutdown.
> ASAN: Race condition (heap-use-after-free) on asterisk closing
> --------------------------------------------------------------
>
> Key: ASTERISK-24805
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-24805
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Core/PBX
> Affects Versions: 11.15.0
> Reporter: Badalian Vyacheslav
> Severity: Minor
> Attachments: ASTERISK-24805.patch
>
>
> Bugs:
> {code}
> ==24513==ERROR: AddressSanitizer: heap-use-after-free on address 0x60d0000055d0 at pc 0x604543 bp 0x7f49e2653810 sp 0x7f49e2653808
> READ of size 4 at 0x60d0000055d0 thread T44
> #0 0x604542 in ast_hashtab_lookup /root/asterisk-11.15.0/main/hashtab.c:543
> #1 0x6a76b7 in find_context /root/asterisk-11.15.0/main/pbx.c:6948
> #2 0x6a76b7 in pbx_find_extension /root/asterisk-11.15.0/main/pbx.c:3150
> #3 0x6b24a1 in pbx_extension_helper /root/asterisk-11.15.0/main/pbx.c:4840
> #4 0x6b2d98 in ast_exists_extension /root/asterisk-11.15.0/main/pbx.c:6012
> #5 0x7f49f054140a in get_destination /root/asterisk-11.15.0/channels/chan_sip.c:17530
> #6 0x7f49f06100d7 in handle_request_invite /root/asterisk-11.15.0/channels/chan_sip.c:25628
> #7 0x7f49f061d212 in handle_incoming /root/asterisk-11.15.0/channels/chan_sip.c:28339
> #8 0x7f49f06222da in handle_request_do /root/asterisk-11.15.0/channels/chan_sip.c:28548
> #9 0x7f49f0623a71 in _sip_tcp_helper_thread /root/asterisk-11.15.0/channels/chan_sip.c:3041
> #10 0x7339b4 in handle_tcptls_connection /root/asterisk-11.15.0/main/tcptls.c:684
> #11 0x74f33f in dummy_start /root/asterisk-11.15.0/main/utils.c:1223
> #12 0x7f4a080629d0 in start_thread (/lib64/libpthread.so.0+0x79d0)
> #13 0x7f4a087e88fc in clone (/lib64/libc.so.6+0xe88fc)
> 0x60d0000055d0 is located 106446469485936 bytes inside
> {code}
> {code}
> ==23657==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b00002fb08 at pc 0x69b388 bp 0x7f1fa219c320 sp 0x7f1fa219c318
> READ of size 8 at 0x60b00002fb08 thread T111
> #0 0x69b387 in pbx_exec /root/asterisk-11.15.0/main/pbx.c:1623
> #1 0x6b2273 in pbx_extension_helper /root/asterisk-11.15.0/main/pbx.c:4915
> #2 0x6c0aa8 in ast_spawn_extension /root/asterisk-11.15.0/main/pbx.c:6037
> #3 0x6c0aa8 in __ast_pbx_run /root/asterisk-11.15.0/main/pbx.c:6512
> #4 0x6c30ca in pbx_thread /root/asterisk-11.15.0/main/pbx.c:6842
> #5 0x74f33f in dummy_start /root/asterisk-11.15.0/main/utils.c:1223
> #6 0x7f1fd66db9d0 in start_thread (/lib64/libpthread.so.0+0x79d0)
> #7 0x7f1fd6e618fc in clone (/lib64/libc.so.6+0xe88fc)
> 0x60b00002fb08 is located 106309030705832 bytes inside
> {code}
> To reproduce:
> # add to chan_sip.conf
> {code}
> [sipp]
> type=friend
> context=from-internal
> host=dynamic
> port=6000
> user=sipp
> canreinvite=no
> disallow=all
> allow=alaw
> allow=ulaw
> {code}
> # add to extentions.conf
> {code}
> [from-internal]
> exten => 766,1,Answer()
> exten => 766,n,MusicOnHold(,5)
> exten => 766,n,Hangup
> {code}
> # run {{asterisk -gc}} with ASAN (valgrind i think also found this bug)
> # run at another console {{./sipp -sn uac -d 10000 -s 766 127.0.0.1 -mp 5606 -s 766 -l 1000 -r 100 -t t1}}
> # stop asterisk with {{core stop now}} or {{ctrl+c}}
> You will see race condition in thread closing order and then use after free. As i show at start of description
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list