Страница 1 из 2
Падает астер при странных обстоятельствах
Добавлено: 23 мар 2019, 23:27
r1der23
Приветствую всех присутствующих! уважаемые форумчане.
Исходные данные
Xeon 2.6 GHZ/16GB/256SSD VM (vSphere)
Установлен дистриб FreePBX 14.0.5.20, Asterisk 15.5.0
используется sip (не pjsip) драйвер
10 очередей, статические операторы
кастомный конфиг для приема звонков
Ситуация
Код: Выделить всё
[root@opti-pbx01 log]# grep -r "segfault"
messages-20190303:Feb 27 19:20:02 opti-pbx01 kernel: asterisk[30479]: segfault at 10 ip 00007f53630a0e04 sp 00007f5342de9a70 error 4 in app_queue.so[7f5363085000+39000]
messages-20190310:Mar 3 10:36:01 opti-pbx01 kernel: asterisk[24224]: segfault at 10 ip 00007fc7ebcb5e04 sp 00007fc7cbc6fa70 error 4 in app_queue.so[7fc7ebc9a000+39000]
messages-20190310:Mar 9 15:03:01 opti-pbx01 kernel: asterisk[21608]: segfault at 10 ip 00007f4fe6551e04 sp 00007f5009c44a70 error 4 in app_queue.so[7f4fe6536000+39000]
messages-20190317:Mar 10 13:49:31 opti-pbx01 kernel: asterisk[8214]: segfault at 10 ip 00007fd8dc4c5e04 sp 00007fd8bcccca70 error 4 in app_queue.so[7fd8dc4aa000+39000]
messages-20190317:Mar 13 13:27:02 opti-pbx01 kernel: asterisk[7659]: segfault at 10 ip 00007fd3436abe04 sp 00007fd322936a70 error 4 in app_queue.so[7fd343690000+39000]
messages-20190224:Feb 18 09:11:35 opti-pbx01 kernel: asterisk[1769]: segfault at 10 ip 00007f9441732e04 sp 00007f94dc6c5a70 error 4 in app_queue.so[7f9441717000+39000]
messages-20190224:Feb 19 16:46:01 opti-pbx01 kernel: asterisk[10706]: segfault at 10 ip 00007f0025317e04 sp 00007f00054c5a70 error 4 in app_queue.so[7f00252fc000+39000]
messages-20190224:Feb 22 13:38:42 opti-pbx01 kernel: asterisk[22020]: segfault at 10 ip 00007f2158c04e04 sp 00007f2135573a70 error 4 in app_queue.so[7f2158be9000+39000]
messages-20190224:Feb 22 18:59:01 opti-pbx01 kernel: asterisk[20117]: segfault at 10 ip 00007fb81db5be04 sp 00007fb7fda1fa70 error 4 in app_queue.so[7fb81db40000+39000]
messages:Mar 21 17:57:07 opti-pbx01 kernel: asterisk[13260]: segfault at 10 ip 00007f2d580bee04 sp 00007f2d38848a70 error 4 in app_queue.so[7f2d580a3000+39000]
messages:Mar 22 14:23:01 opti-pbx01 kernel: asterisk[10965]: segfault at 10 ip 00007fd7507a2e04 sp 00007fd7303f1a70 error 4 in app_queue.so[7fd750787000+39000]
messages:Mar 23 13:32:01 opti-pbx01 kernel: asterisk[32121]: segfault at 10 ip 00007f1a9d52be04 sp 00007f1a7ddafa70 error 4 in app_queue.so[7f1a9d510000+39000]
и соответственно перезапуск астериска после сегфаулт.
Прилагаю
1) кордамп после креша сделан с помощью ast_coredumper --latest
2) кастомный диалплан который есть extensions_custom.conf
https://www.sendspace.com/file/9nr5fl
Дополнительно
Пробовал на пред версии астера на том же дистрибе - ситуация аналогичная
Прошу помощи, не могу разобраться
Re: Падает астер при странных обстоятельствах
Добавлено: 24 мар 2019, 21:05
sasa
0) Если вы умеете создавать такие отчеты наверное умеете и фиксить ?
1) Ошибка в днк
2) В бектрейсе не видно от чего упало, вы забыли добавить самый главный трейс
3) Ставьте самую последнюю версию с мастера и если будет падать, создавайте баг репорт на issue астериск орг
Re: Падает астер при странных обстоятельствах
Добавлено: 25 мар 2019, 09:29
r1der23
0) Если вы умеете создавать такие отчеты наверное умеете и фиксить ?
фиксить вот увы не умею, поэтому и запостил на форуме, не могу отловить ошибку
1) Ошибка в днк
исключено)
2) В бектрейсе не видно от чего упало, вы забыли добавить самый главный трейс
вы имеете ввиду непосредственно кор дамп? он весит под гиг. залить? насколько понимаю падает в handle_hangup,
полазить с гдб не было возможности так как у сангомы проблемы с дебагинфо.
3) Ставьте самую последнюю версию с мастера и если будет падать, создавайте баг репорт на issue астериск орг
версия последняя. репортить пока не вижу необходимости пока не буду точно уверен что не сам дурак.
все еще прошу помощи)
Re: Падает астер при странных обстоятельствах
Добавлено: 25 мар 2019, 13:42
sasa
Нет я имел ввиду что ниодин трейс не показывает на упавший треид
Возможно обычного bt не хватает
Разбираться в падениях дорого и не благодарное дело, лучше всего с этим справляются сами разработчики астериска
У вас не может быть последней версии, вы уверены что брали его с гита мастера ?
Он у вас уже падает, какой уверенности вы еще ожидаете ?
Re: Падает астер при странных обстоятельствах
Добавлено: 25 мар 2019, 13:56
ded
ТС мог бы привести свой кастомный диалплан который есть extensions_custom.conf
В котором, как раз, он скорее всего не уверен.
Re: Падает астер при странных обстоятельствах
Добавлено: 25 мар 2019, 14:00
sasa
Если есть сценарий который приводит к падению
То это ошибка не сценария
Возможно если действитеьльно dev версия то стоит попробовать на какую то стеибл версию астериска
Re: Падает астер при странных обстоятельствах
Добавлено: 25 мар 2019, 22:06
r1der23
Нет я имел ввиду что ниодин трейс не показывает на упавший треид
Возможно обычного bt не хватает
Разбираться в падениях дорого и не благодарное дело, лучше всего с этим справляются сами разработчики астериска
У вас не может быть последней версии, вы уверены что брали его с гита мастера ?
Он у вас уже падает, какой уверенности вы еще ожидаете ?
да вы правы попробую мигрировать на обновленный стейбл из мастера
бт сделать невозможно так как нет дебагинфо, к сангоме не подходит стандартные дебагинфо от данной версии астера
ТС мог бы привести свой кастомный диалплан который есть extensions_custom.conf
В котором, как раз, он скорее всего не уверен.
он есть в архиве по ссылке, дополнительно приведу сюда.
Предположению что это может быть диалплан выходит из двух суждений
1) это единственное кастомное что там есть
2) все звонки входящие идут через него
падение происходит при случайных переменных(все случаи сравнивал), при завершении одного их входящих звонков.
ниже привожу код
Код: Выделить всё
[from-trunk-custom-income]
;default config
exten => _.,1,Set(fname=${STRFTIME(,,%H_%M_%S)}_${CALLERID(all)}.wav)
same => n,NoOp(${SIP_HEADER(To)})
same => n,NoOp(${EXTEN})
same => n,Set(__DAY=${STRFTIME(${NOW},,%d)})
same => n,Set(__MONTH=${STRFTIME(${NOW},,%m)})
same => n,Set(__YEAR=${STRFTIME(${NOW},,%Y)})
same => n,Set(xrealnum=${EXTEN})
;process vectortel
same => n,ExecIf($["${EXTEN}" = "100309"]?Set(xrealnum=${SIP_HEADER(To):6:11}))
same => n,NoOp(${xrealnum})
;record call
same => n,Set(fdir=/var/www/html/monitoring/${YEAR}/${MONTH}/${DAY}/${xrealnum}/)
same => n,Set(MONITOR_EXEC=/usr/bin/lame -b 16 --silent "${fdir}${fname}.wav" "${fdir}${fname}.mp3" && rm �f "${fdir}${fname}.wav")
same => n,MixMonitor(${fdir}${fname}.wav,a,${MONITOR_EXEC})
same => n,Set(CDR(recordingfile)=${fdir}${fname})
;make prefix
;personal
same => n,ExecIf( $[ "${xrealnum}" = "55555555555" ] ?Set(CPREFIX=MSKPERS) )
same => n,ExecIf( $[ "${xrealnum}" = "44444444" ] ?Set(CPREFIX=HH) )
same => n,ExecIf( $[ "${xrealnum}" = "3333333333333" ] ?Set(CPREFIX=MSKBACK) )
same => n,ExecIf( $[ "${xrealnum}" = "1111111111" ] ?Set(CPREFIX=HRMOB) )
same => n,ExecIf( $[ "${xrealnum}" = "22222222222" ] ?Set(CPREFIX=HRMOB) )
same => n,ExecIf( $[ "${xrealnum}" = "66666666666" ] ?Set(CPREFIX=PERS) )
;----------- cutted
same => n,NoOp( ${CPREFIX})
same => n,Set(CALLERID(name)=${CPREFIX} ${CALLERID(number)})
same => n,Dial(Local/${xrealnum}@from-trunk)
same => n,Hangup()
exten => h,1,Hangup()
Re: Падает астер при странных обстоятельствах
Добавлено: 26 мар 2019, 12:41
ded
судя по названиям from-trunk-custom-income и другим - вы пытаетесь кастомизировать FreePBX?
1) В обработке from-trunk-custom-income делаете то, что сама FreePBX делает в других модулях лучше.
Попробуйте закомментировать строку, и понаблюдайте пока без записи. Падений не будет.
same => n,Set(MONITOR_EXEC=/usr/bin/lame -b 16 --silent "${fdir}${fname}.wav" "${fdir}${fname}.mp3" && rm �f "${fdir}${fname}.wav")
что-то у вас там за символ скопировался..?
2) same => n,Dial(Local/${xrealnum}@from-trunk) - так передавать номер (он вообще везде называется DID и не изобретать переменную xrealnum) не стоит. Лучше
same => n,Goto(from-trunk,${xrealnum},1)
Re: Падает астер при странных обстоятельствах
Добавлено: 26 мар 2019, 15:25
r1der23
ded писал(а):судя по названиям from-trunk-custom-income и другим - вы пытаетесь кастомизировать FreePBX?
1) В обработке from-trunk-custom-income делаете то, что сама FreePBX делает в других модулях лучше.
Попробуйте закомментировать строку, и понаблюдайте пока без записи. Падений не будет.
same => n,Set(MONITOR_EXEC=/usr/bin/lame -b 16 --silent "${fdir}${fname}.wav" "${fdir}${fname}.mp3" && rm �f "${fdir}${fname}.wav")
что-то у вас там за символ скопировался..?
rm -rf просто почему то так скопировалось
попробую закомментировать
средствами freepbx это сделать нельзя.
а) некоторые провайдеры DID передают номер куда звонили в одном из SIP заголовков
б) можно действительно ставить префиксы номерам, и можно разруливать директорию записи и даже поставить скрипт который будет запускаться после mixmonitor, но это по freepbx пляски с бубном и решается не лучше.
ded писал(а):
2) same => n,Dial(Local/${xrealnum}@from-trunk) - так передавать номер (он вообще везде называется DID и не изобретать переменную xrealnum) не стоит. Лучше
same => n,Goto(from-trunk,${xrealnum},1)
есть провайдер, называется вектортелеком, если у них покупаешь много did, то они передают реальный номер именно в таком сип параметре.
Код: Выделить всё
;process vectortel
same => n,ExecIf($["${EXTEN}" = "100309"]?Set(xrealnum=${SIP_HEADER(To):6:11}))
Отключаю пока запись. Попробуем без нее
Re: Падает астер при странных обстоятельствах
Добавлено: 26 мар 2019, 17:14
ded
r1der23 писал(а):средствами freepbx это сделать нельзя.
Легко. В относительно новых версиях даже есть отдельный модуль Recording, который можно встраивать в цепочки сценариев входящих вызовов. Если принимать входящие с пред-обработкой (как внизу, например), то дальше в модуле Входящая маршрутизация указываем DID = 100309 назначение - Recording, а оттуда - IVR, или группа, или внутренний номер.
r1der23 писал(а):а) некоторые провайдеры DID передают номер куда звонили в одном из SIP заголовков
из которого можно вытащить что угодно, включая его.
r1der23 писал(а):б) можно действительно ставить префиксы номерам, и можно разруливать директорию записи
нет, с префиксами - это каменный век. Можно устанавливать значения штатной или кастомной переменной, и пускай себе пишет как полагается, но индексируем потом по значению этой переменной, и выгребаем из общей кучи ровно то, что нам нужно отобразить.
А тут делаем так:
Код: Выделить всё
;process vectortel
exten => _XXXXXX,1,NoOp( DID is ${SIP_HEADER(To):6:11})) ; All DIDs
exten => 100309,n,Set(EXTEN=${SIP_HEADER(To):6:11}))
.......
exten => _XXXXXX,n,Goto(from-trunk,${EXTEN},1)