AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2015, 02:48   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Попробуйте отключить выполнение бизнес-логики в CIL и посмотрите, удастся ли снова завалить AOS найденным вами способом. Аналогичный случай был у меня в прошлом году: при определенных обстоятельствах вроде как в штатной ситуации падал AOS AX 2012 R2, при этом удалось выудить вот такой стек вызовов:
Код:
Child-SP          RetAddr           Call Site
00000000`2451d8c8 00000000`77763072 ntdll!NtWaitForSingleObject+0xa
00000000`2451d8d0 00000000`777632b5 ntdll!RtlReportSqmEscalation+0x1162
00000000`2451d9c0 00000000`7776331a ntdll!RtlReportException+0xb5
00000000`2451da40 00000000`77764155 ntdll!RtlReportException+0x11a
00000000`2451da70 00000000`776b85c8 ntdll!RtlUnhandledExceptionFilter+0x325
00000000`2451daa0 00000000`776c9d2d ntdll!_C_specific_handler+0x9c
00000000`2451db10 00000000`776b91cf ntdll!RtlDecodePointer+0xad
00000000`2451db40 00000000`776b97c8 ntdll!RtlUnwindEx+0xbbf
00000000`2451e220 00000000`77764102 ntdll!RtlRaiseException+0x248
00000000`2451ebd0 00000000`77764746 ntdll!RtlUnhandledExceptionFilter+0x2d2
00000000`2451eca0 00000000`77765952 ntdll!EtwEnumerateProcessRegGuids+0x216
00000000`2451ecd0 00000000`77767604 ntdll!RtlQueryProcessLockInformation+0x972
00000000`2451ed00 00000000`7770dc1f ntdll!RtlLogStackBackTrace+0x444
00000000`2451ed30 00000000`774a1a4a ntdll!RtlIsDosDeviceName_U+0x141ff
00000000`2451edb0 00000000`74fe8d94 kernel32!HeapFree+0xa
00000000`2451ede0 00000001`40213110 msvcr100!free+0x1c
00000000`2451ee10 00000001`3ffe5c7e Ax32Serv!CQLFreeVars+0x130
00000000`2451ee60 00000001`3ffe91e3 Ax32Serv!cqlClass::doFree+0x6e
00000000`2451ef40 000007fe`fe4afe85 Ax32Serv!ServerFreeClass+0x163
00000000`2451f010 000007fe`fe4a4d12 rpcrt4!Invoke+0x65
00000000`2451f0a0 000007fe`fe4a16bd rpcrt4!NdrStubCall2+0x32a
00000000`2451f6c0 000007fe`fe4a3134 rpcrt4!NdrServerCall2+0x1d
00000000`2451f6f0 000007fe`fe4a3296 rpcrt4!DispatchToStubInCNoAvrf+0x14
00000000`2451f720 000007fe`fe49bf2e rpcrt4!RPC_INTERFACE::DispatchToStubWorker+0x146
00000000`2451f840 000007fe`fe49bd92 rpcrt4!OSF_SCALL::DispatchHelper+0x15e
00000000`2451f960 000007fe`fe49bd29 rpcrt4!OSF_SCALL::ProcessReceivedPDU+0x36b
00000000`2451f9f0 000007fe`fe49b853 rpcrt4!OSF_SCONNECTION::ProcessReceiveComplete+0x3e9
00000000`2451faa0 000007fe`fd4e85ff rpcrt4!CO_ConnectionThreadPoolCallback+0x123
00000000`2451fb50 00000000`776b097a KERNELBASE!BasepTpIoCallback+0x4b
00000000`2451fb90 00000000`776bff2f ntdll!RtlEqualDomainName+0x38a
00000000`2451fc40 00000000`774959ed ntdll!RtlValidateHeap+0x4af
00000000`2451ff40 00000000`776cc541 kernel32!BaseThreadInitThunk+0xd
00000000`2451ff70 00000000`00000000 ntdll!RtlUserThreadStart+0x21
Вспомнил я свой случай потому, что дело тоже обрывалось на освобождении памяти ядром, при этом явных следов работы кода Х++ не было. С другой стороны, все статьи уважаемого Tariq Bell на тему поиска "злополучного" стека вызовов кода X++ касаются ситуации, когда приложение выполняется в интерпретаторе байт-кода X++, а не когда оно работает в CIL.
В моем случае причина падения АОСа была локализована, как ни странно, в не совсем корректной обработке исключений при выполнении кода в CIL. Обработка исключений в CIL имеет определенные особенности, которые исследованы в публикации Exception handling with X++ and .NET Interop. В частности, из моего скромного опыта, следует корректно и аккуратно обрабатывать Exception::CLRError, даже если код явно не взаимодействует с CLR. К сожалению, стандартный код самых что ни на есть базовых классов в этом плане не безупречен.
В общем, как минимум, в моем случае причина падения АОСа, естественно, была в ядре - в том, как оно освобождает память при обработке исключений в CIL, но проблему удалось обойти за счет более аккуратного написания кода X++.
За это сообщение автора поблагодарили: Logger (3), jonny (4).
Старый 13.01.2015, 06:38   #2  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Спасибо за ответ.
Галочку Выполнение бизнес логики в CIL снял, не помогло, с 6-го повторения AOS упал.
Я не могу понять, как вообще может быть связаны манипуляции в форме заказа на продажу с падением при старте клиента.
А как вам удалось локализовать проблему в вашем случае?
Старый 06.05.2016, 09:50   #3  
igortsk is offline
igortsk
Участник
 
12 / 10 (1) +
Регистрация: 05.10.2014
gl00mie, что-то уж очень похож Ваш стек на мой. проблема та же - падает АОС и не пойму из-за чего. С помощью статей Tariq не смог ничего подчерпнуть. Если помните, подскажите плиз где конкретно и что мне посмотреть, чтобы убедиться, что у меня не та же самая проблема? И если это она, что исправить. Заранее очень благодарен!

мой стек:
Код:
# Child-SP          RetAddr           Call Site
00 00000004`931ac908 000007fe`fd8a1430 ntdll!NtWaitForMultipleObjects+0xa
01 00000004`931ac910 00000000`77911753 KERNELBASE!WaitForMultipleObjectsEx+0xe8
02 00000004`931aca10 00000000`7798b635 kernel32!WaitForMultipleObjectsExImplementation+0xb3
03 00000004`931acaa0 00000000`7798b7b7 kernel32!WerpReportFaultInternal+0x215
04 00000004`931acb40 00000000`7798b80f kernel32!WerpReportFault+0x77
05 00000004`931acb70 00000000`7798ba2c kernel32!BasepReportFault+0x1f
06 00000004`931acba0 00000000`77acfe45 kernel32!UnhandledExceptionFilter+0x1fc
07 00000004`931acc80 00000000`77ad0225 ntdll!TppExceptionFilter+0xa5
08 00000004`931acce0 00000000`77a9a2cf ntdll!TppWorkerpInnerExceptionFilter+0x15
09 00000004`931acd10 00000000`77a28008 ntdll! ?? ::FNODOBFM::`string'+0x25a0
0a 00000004`931acd50 00000000`77a98419 ntdll!_C_specific_handler+0x8c
0b 00000004`931acdc0 00000000`77a3905d ntdll!_GSHandlerCheck_SEH+0x75
0c 00000004`931acdf0 00000000`77a28c0f ntdll!RtlpExecuteHandlerForException+0xd
0d 00000004`931ace20 00000000`77a5d948 ntdll!RtlDispatchException+0x45a
0e 00000004`931ad500 00000001`4059412a ntdll!KiUserExceptionDispatcher+0x2e
0f 00000004`931adac0 00000001`40594618 Ax32Serv!SqlData::cvtField+0x1ea
10 00000004`931adba0 00000001`4030092f Ax32Serv!SqlData::cvtRecord+0x458
11 00000004`931adc60 00000001`40300e92 Ax32Serv!SqlStmt::GetFetchedDataContents+0x67f
12 00000004`931ae5d0 00000001`40300fad Ax32Serv!SqlStmt::next+0x382
13 00000004`931ae670 00000001`404ef6d4 Ax32Serv!SqlStmtTimed::next+0x4d
14 00000004`931ae6a0 00000001`4027bc25 Ax32Serv!cqlDatasourceSql::fetchrec+0x384
15 00000004`931ae710 00000001`4027e745 Ax32Serv!cqlCursor::__next+0x605
16 00000004`931ae8f0 00000001`4027f18c Ax32Serv!cqlCursor::_next+0x2805
17 00000004`931aebc0 000007fe`ff57f4a5 Ax32Serv!ServerNext+0x45c
18 00000004`931aed40 000007fe`ff574502 rpcrt4!Invoke+0x65
19 00000004`931aee00 000007fe`ff570e7d rpcrt4!NdrStubCall2+0x32a
1a 00000004`931af420 000007fe`ff572924 rpcrt4!NdrServerCall2+0x1d
1b 00000004`931af450 000007fe`ff572a86 rpcrt4!DispatchToStubInCNoAvrf+0x14
1c 00000004`931af480 000007fe`ff56b6ee rpcrt4!RPC_INTERFACE::DispatchToStubWorker+0x146
1d 00000004`931af5a0 000007fe`ff56b552 rpcrt4!OSF_SCALL::DispatchHelper+0x15e
1e 00000004`931af6c0 000007fe`ff56b4e9 rpcrt4!OSF_SCALL::ProcessReceivedPDU+0x36b
1f 00000004`931af750 000007fe`ff56b013 rpcrt4!OSF_SCONNECTION::ProcessReceiveComplete+0x3e9
20 00000004`931af800 000007fe`fd8a8c6f rpcrt4!CO_ConnectionThreadPoolCallback+0x123
21 00000004`931af8b0 00000000`77a206ea KERNELBASE!BasepTpIoCallback+0x4b
22 00000004`931af8f0 00000000`77a2f7af ntdll!TppIopExecuteCallback+0x1ff
23 00000004`931af9a0 00000000`77905a4d ntdll!TppWorkerThread+0x3f8
24 00000004`931afca0 00000000`77a3b831 kernel32!BaseThreadInitThunk+0xd
25 00000004`931afcd0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d

Последний раз редактировалось igortsk; 06.05.2016 в 11:30.
Старый 06.05.2016, 10:23   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
igortsk, MS попросить посмотреть почему не хотите ?
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 06.05.2016 в 10:30.
Старый 06.05.2016, 11:28   #5  
igortsk is offline
igortsk
Участник
 
12 / 10 (1) +
Регистрация: 05.10.2014
потому что подписка закончилась на AX, а там похоже нужна подписка
Старый 07.05.2016, 10:02   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от igortsk Посмотреть сообщение
gl00mie, что-то уж очень похож Ваш стек на мой. проблема та же - падает АОС и не пойму из-за чего. С помощью статей Tariq не смог ничего подчерпнуть. Если помните, подскажите плиз где конкретно и что мне посмотреть, чтобы убедиться, что у меня не та же самая проблема?
Мне кажется, что стеки совсем разные. Если выкинуть служебные фреймы, связанные с RPC-вызовом и обработкой исключения, то у меня дело было, видимо, в освобождении памяти по кривому указателю:
Код:
Child-SP          RetAddr           Call Site
00000000`2451edb0 00000000`74fe8d94 kernel32!HeapFree+0xa
00000000`2451ede0 00000001`40213110 msvcr100!free+0x1c
00000000`2451ee10 00000001`3ffe5c7e Ax32Serv!CQLFreeVars+0x130
00000000`2451ee60 00000001`3ffe91e3 Ax32Serv!cqlClass::doFree+0x6e
00000000`2451ef40 000007fe`fe4afe85 Ax32Serv!ServerFreeClass+0x163
А тут валится всё на доступе к полю курсора:
Код:
Child-SP          RetAddr           Call Site
00000004`931adac0 00000001`40594618 Ax32Serv!SqlData::cvtField+0x1ea
00000004`931adba0 00000001`4030092f Ax32Serv!SqlData::cvtRecord+0x458
00000004`931adc60 00000001`40300e92 Ax32Serv!SqlStmt::GetFetchedDataContents+0x67f
00000004`931ae5d0 00000001`40300fad Ax32Serv!SqlStmt::next+0x382
00000004`931ae670 00000001`404ef6d4 Ax32Serv!SqlStmtTimed::next+0x4d
00000004`931ae6a0 00000001`4027bc25 Ax32Serv!cqlDatasourceSql::fetchrec+0x384
00000004`931ae710 00000001`4027e745 Ax32Serv!cqlCursor::__next+0x605
00000004`931ae8f0 00000001`4027f18c Ax32Serv!cqlCursor::_next+0x2805
00000004`931aebc0 000007fe`ff57f4a5 Ax32Serv!ServerNext+0x45c
Я лично в подобных случаях первым делом пытаюсь воспроизвести проблему на последней доступной сборке ядра. Если там проблема не воспроизводится, значит, кто-то уже наступил на те же грабли, и ядро успели поправить. Обновления ядра общедоступны, номера статей KB публикуются здесь, а как по номеру KB скачать исправление, было описано здесь.

Последний раз редактировалось gl00mie; 07.05.2016 в 10:13.
Старый 10.05.2016, 07:12   #7  
igortsk is offline
igortsk
Участник
 
12 / 10 (1) +
Регистрация: 05.10.2014
возможно ли, что это мы что-то на*бокодили? Но мы в ядро не лезем конечно..
Старый 02.09.2016, 10:13   #8  
vmokerov is offline
vmokerov
Участник
 
20 / 25 (1) +++
Регистрация: 23.02.2011
:( Ax 2012 R3 смещения в дампе
Добрый день.

Подскажите, пожалуйста, как для Ax 2012 R3 x64 смещения узнать, которые добавлять к адресу в дампе памяти. Пробовал указанные для Ax 2009 x64 не выходит (https://blogs.msdn.microsoft.com/eme...aused-a-crash/). Еще в статье почему-то в описании алгоритма указываются одни числа для ax 2009 x64, а в примере другие.
Старый 02.09.2016, 11:04   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от vmokerov Посмотреть сообщение
Подскажите, пожалуйста, как для Ax 2012 R3 x64 смещения узнать, которые добавлять к адресу в дампе памяти. Пробовал указанные для Ax 2009 x64 не выходит
Попробуйте рецепты из axsa: Finding the X++ stack and AX user with public symbols in AX2012
За это сообщение автора поблагодарили: Logger (5), vmokerov (1).
Старый 02.09.2016, 13:56   #10  
vmokerov is offline
vmokerov
Участник
 
20 / 25 (1) +++
Регистрация: 23.02.2011
Спасибо
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Спасибо помогло!
Класс вычислил, правда метод возвращает только ?????????
Падения удалось устранить очисткой SysLastValue, видимо что-то не предусмотрели при кастомизации.
За это сообщение автора поблагодарили: Ivanhoe (1).
Старый 06.05.2016, 10:23   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,983 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В общем, как минимум, в моем случае причина падения АОСа, естественно, была в ядре - в том, как оно освобождает память при обработке исключений в CIL, но проблему удалось обойти за счет более аккуратного написания кода X++.
Можешь подробнее раскрыть тему ?
Как правильнее делать обработку исключений CLR чтобы свести к минимуму такие риски ?
Теги
.net, aoc, ax2012, crash, crash and hang analysis, crash dump, debug symbols, dump analisys, exception, lcs, stack trace, symbols, tariq bell

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
msdyncomm: Microsoft Dynamics AX 2012 R3 for Service Industries demo: Staff for success Blog bot DAX Blogs 0 25.06.2014 05:22
emeadaxsupport: AX Content: Management Packs for AX 2012 R3! Blog bot DAX Blogs 0 20.05.2014 04:28
axinthefield: Are your AX 2012 AOS servers load balancing? Blog bot DAX Blogs 0 02.05.2012 13:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:08.