28.10.2021, 15:59 | #1 |
Участник
|
Падает сбор перекрестных ссылок
Привет всем.
Коллеги, кто-нибудь встречался с такой багой : При полном сборе перекрестных ссылок падает аос на одном из 3 отчетов. Если удалить отчеты, падения прекращаются. Сделал небольшую кастомизацию в метод \Classes\xRefUpdate\updatePath пишу в нем path узла по которому идет сбор. получается своеобразный лог по каким узлам собрались ссылки перед падением. По отчетам картина интересная, сперва собираются ссылки по всем узлам отчета, затем по всем методам и после (или в момент) обработки последнего метода все падает. По ощущениям падение происходит в момент высвобождения каких-то ресурсов. При этом если собирать ссылки отдельно по ветке \Reports то ничего не падает. Также падения зависят от базы с данными подложенными под приложение. На деве сперва не падало. Подложили базу с рабочей - стало падать. В общем очень странное поведение. Куда рыть ? Dax 2012 R3 |
|
28.10.2021, 16:05 | #2 |
Участник
|
Анализ дампов памяти:
Цитата:
Microsoft (R) Windows Debugger Version 10.0.19041.685 AMD64
Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [D:\Prod\2021_10_27\Ax32Serv.exe.25256.dmp] User Mini Dump File with Full Memory: Only application data is available Symbol search path is: srv* Executable search path is: Windows 10 Version 14393 MP (12 procs) Free x64 Product: Server, suite: TerminalServer SingleUserTS 10.0.14393.3986 (rs1_release.201002-1707) Machine Name: Debug session time: Wed Oct 27 21:52:57.000 2021 (UTC + 3:00) System Uptime: 7 days 22:24:10.004 Process Uptime: 0 days 9:42:53.000 ................................................................ ................................................................ ................................................... Loading unloaded module list .......... This dump file has an exception of interest stored in it. The stored exception information can be accessed via .ecxr. (62a8.7180): Access violation - code c0000005 (first/second chance not available) For analysis of this file, run !analyze -v ntdll!NtWaitForMultipleObjects+0x14: 00007ff8`1c0f6124 c3 ret 0:039> !analyze -v ******************************************************************************* * * * Exception Analysis * * * ******************************************************************************* Failed to request MethodData, not in JIT code range MethodDesc: 00007ff7ad876a58 Method Name: Microsoft.Dynamics.Ax.MSIL.cqlClassIL.Call(IntPtr, System.String, System.Object[], System.Type[], System.Object[], System.Type[]) Class: 00007ff7ad8bf3b8 MethodTable: 00007ff7ad876b18 mdToken: 000000000600087b Module: 00007ff7ad275388 IsJitted: yes CodeAddr: 00007ff7ae7f22c0 Transparency: Safe critical MethodDesc: 00007ff7ad39ac40 Method Name: Microsoft.Dynamics.Ax.Xpp.XppObjectBase.Call(System.String, System.Object[], System.Type[], System.Object[]) Class: 00007ff7ad63a330 MethodTable: 00007ff7ad39add8 mdToken: 0000000006000093 Module: 00007ff7ad399b68 IsJitted: yes CodeAddr: 00007ff7ae7f2210 Transparency: Critical MethodDesc: 00007ff7b15252b8 Method Name: Dynamics.Ax.Application.TreeNode.Aotmakexref(Int32, Boolean) Class: 00007ff7b151db40 MethodTable: 00007ff7b1525490 mdToken: 0000000006006fee Module: 00007ff7ad39f820 IsJitted: yes CodeAddr: 00007ff7ae87baf0 Transparency: Critical MethodDesc: 00007ff7b152da60 Method Name: Dynamics.Ax.Application.xRefUpdate.Run() Class: 00007ff7b15524f0 MethodTable: 00007ff7b152db18 mdToken: 00000000060000e6 Module: 00007ff7ae5c1a28 IsJitted: yes CodeAddr: 00007ff7ae879d80 Transparency: Critical MethodDesc: 00007ff7b15649a0 Method Name: Dynamics.Ax.Application.xRefUpdateIL.Updateall() Class: 00007ff7b155c2c8 MethodTable: 00007ff7b1564a10 mdToken: 0000000006000011 Module: 00007ff7afc48db8 IsJitted: yes CodeAddr: 00007ff7ae875000 Transparency: Critical MethodDesc: 00007ff7b1564970 Method Name: Dynamics.Ax.Application.xRefUpdateIL.Run() Class: 00007ff7b155c2c8 MethodTable: 00007ff7b1564a10 mdToken: 000000000600000b Module: 00007ff7afc48db8 IsJitted: yes CodeAddr: 00007ff7ae874cd0 Transparency: Critical MethodDesc: 00007ff7ad39e378 Method Name: Dynamics.Ax.Application.BatchRun.runJobStaticCode(Int64) Class: 00007ff7ad6ec190 MethodTable: 00007ff7ad39eac8 mdToken: 00000000060000d9 Module: 00007ff7ad398cd0 IsJitted: yes CodeAddr: 00007ff7ae83d200 Transparency: Critical MethodDesc: 00007ff7ad39e368 Method Name: Dynamics.Ax.Application.BatchRun.runJobStatic(Int64) Class: 00007ff7ad6ec190 MethodTable: 00007ff7ad39eac8 mdToken: 00000000060000d8 Module: 00007ff7ad398cd0 IsJitted: yes CodeAddr: 00007ff7ae83bde0 Transparency: Critical MethodDesc: 00007ff7aefbef98 Method Name: DynamicClass.BatchRun::runJobStatic(System.Object[]) Class: 00007ff7aefbedd0 MethodTable: 00007ff7aefbee48 mdToken: 0000000006000000 Module: 00007ff7ad398cd0 IsJitted: yes CodeAddr: 00007ff7aef70a50 Transparency: Critical MethodDesc: 00007ff7ad76cd20 Method Name: Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(System.Type, System.String, System.Object[]) Class: 00007ff7ad785838 MethodTable: 00007ff7ad76cd80 mdToken: 00000000060003ac Module: 00007ff7ad399b68 IsJitted: yes CodeAddr: 00007ff7ae7fe760 Transparency: Critical MethodDesc: 00007ff7ad397b00 Method Name: BatchIL.taskThreadEntry(System.Object) Class: 00007ff7ad3a77f0 MethodTable: 00007ff7ad397b50 mdToken: 0000000006000abf Module: 00007ff7ad275388 IsJitted: yes CodeAddr: 00007ff7ae83ac20 Transparency: Critical KEY_VALUES_STRING: 1 Key : AV.Dereference Value: NullClassPtr Key : AV.Fault Value: Read Key : Analysis.CPU.Sec Value: 71 Key : Analysis.DebugAnalysisProvider.CPP Value: Create: 8007007e on XXX6AOSDEV-XXX Key : Analysis.DebugData Value: CreateObject Key : Analysis.DebugModel Value: CreateObject Key : Analysis.Elapsed.Sec Value: 73 Key : Analysis.Memory.CommitPeak.Mb Value: 197 Key : Analysis.System Value: CreateObject Key : CLR.Engine Value: CLR Key : CLR.Version Value: 4.0.30319.0 Key : Timeline.OS.Boot.DeltaSec Value: 685450 Key : Timeline.Process.Start.DeltaSec Value: 34973 NTGLOBALFLAG: 0 PROCESS_BAM_CURRENT_THROTTLED: 0 PROCESS_BAM_PREVIOUS_THROTTLED: 0 APPLICATION_VERIFIER_FLAGS: 0 CONTEXT: (.ecxr) rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000 rdx=0000000000000000 rsi=000000000000005f rdi=000000048fb49630 rip=00007ff708675629 rsp=000000003abbacf0 rbp=000000003abbaf30 r8=0000000000000000 r9=0000000000000000 r10=000000046561dd80 r11=000000003abbace0 r12=00007ff707d30000 r13=00007ff708a40888 r14=000000003a336c70 r15=0000000000000000 iopl=0 nv up ei pl nz na po nc cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010206 Ax32Serv!prPrinterDisplay::releaseRemoteRefs+0x9: 00007ff7`08675629 488b4908 mov rcx,qword ptr [rcx+8] ds:00000000`00000008=???????????????? Resetting default scope EXCEPTION_RECORD: (.exr -1) ExceptionAddress: 00007ff708675629 (Ax32Serv!prPrinterDisplay::releaseRemoteRefs+0x0000000000000009) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 0000000000000000 Parameter[1]: 0000000000000008 Attempt to read from address 0000000000000008 PROCESS_NAME: Ax32Serv.exe READ_ADDRESS: 0000000000000008 ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s. EXCEPTION_CODE_STR: c0000005 EXCEPTION_PARAMETER1: 0000000000000000 EXCEPTION_PARAMETER2: 0000000000000008 MISSING_CLR_SYMBOL: 0 STACK_TEXT: 00000000`3abbacf0 00007ff7`08411598 : 00000000`7e975020 00000000`0000005f 00000000`0000005f 00007ff7`07ec1d80 : Ax32Serv!prPrinterDisplay::releaseRemoteRefs+0x9 00000000`3abbad20 00007ff7`08415dad : 00000000`00000000 00000000`27c51760 00000000`27c51760 00000000`3abbaf30 : Ax32Serv!rgDesignsNode::unpack+0x168 00000000`3abbad70 00007ff7`0808f2f3 : 00000000`000c0000 00000000`00000000 00000000`00000000 00000000`00000000 : Ax32Serv!rgNode::unpackReport+0x29d 00000000`3abbaf00 00007ff7`08091cd0 : 00000000`27c51760 00000000`00000000 00000000`27c51760 00000000`00000000 : Ax32Serv!processNode::loadElement+0x103 00000000`3abbb080 00007ff7`07f0453c : 00000000`00000001 00000000`3abbb290 00000004`95bd85e0 00007ff7`07ef8c9d : Ax32Serv!processNode::callLoadSubtree+0x130 00000000`3abbb140 00007ff7`07f02f51 : 00000004`95bd85e0 00000000`14a4eac0 00000000`14a4eac0 00000000`00000000 : Ax32Serv!semanticObject::validateReferences+0x1c 00000000`3abbb190 00007ff7`07f0301c : 00000000`4d50a430 00000000`197da401 00000000`00000000 00000000`80000060 : Ax32Serv!semanticObject::treeExecute+0x651 00000000`3abbbc30 00007ff7`080949ce : 00000000`28036d20 00000000`3a39b060 00000000`27717ed0 00007ff7`07ef8c9d : Ax32Serv!semanticObject::treeExecute+0x71c 00000000`3abbc6d0 00007ff7`07f0b1b1 : 00000000`3a336c70 00000000`00000000 00000000`3abbc850 00000000`3abbc850 : Ax32Serv!topLevelNode::treeExecute+0x5e 00000000`3abbc750 00007ff7`07f01cb5 : 00000000`00000220 00000000`00000000 00000000`197da4d0 00000000`00080220 : Ax32Serv!semanticObject::treeCompile+0x341 00000000`3abbc900 00007ff7`07f7baa2 : 00000000`3a4ef0e0 00000001`040059f4 00000000`3abbd549 00000000`00000000 : Ax32Serv!semanticObject::makeXref+0x45 00000000`3abbc950 00007ff7`07ee5695 : 00000000`1bb5df00 00000000`00000000 00000000`3abbe000 00007ff8`19749158 : Ax32Serv!interpret::doInternalEval+0x922 00000000`3abbd4b0 00007ff7`07ee63d4 : 00000000`3a4ef000 00000001`040059f4 00000000`3a4ef0e0 00000004`00000000 : Ax32Serv!interpret::evalFunc+0x3a5 00000000`3abbd590 00007ff7`07df9ea9 : 00000000`1bb5df10 00000000`00000001 00000000`3a4ef001 00000000`00000003 : Ax32Serv!interpret::xal_eval_func+0xc84 00000000`3abbdf20 00007ff7`ae7f2501 : 00000001`04005a18 00000000`1bb5df10 00000001`04005108 00000001`040058a8 : Ax32Serv!cqlClass::callEx+0x39 00000000`3abbdf60 00007ff7`ae7f2261 : 00490000`001112f0 00000001`040059e8 00000001`04005a18 00000001`04005a40 : 0x00007ff7`ae7f2501 00000000`3abbe010 00007ff7`ae87bc72 : 00000001`04005a40 00000000`00000001 00000003`3fff4cf8 00000000`00000000 : 0x00007ff7`ae7f2261 00000000`3abbe080 00007ff7`ae87a03e : 00000001`0063aa20 00000000`00000001 00000000`00000001 00000000`00000006 : 0x00007ff7`ae87bc72 00000000`3abbe140 00007ff7`ae87534a : 00000001`00631420 00000000`000000ff 00000000`00000008 00000001`03ff4f88 : 0x00007ff7`ae87a03e 00000000`3abbe300 00007ff7`ae874e89 : 00000001`00630688 00000000`00000000 00000000`00000008 00000000`00000000 : 0x00007ff7`ae87534a 00000000`3abbe4a0 00007ff7`ae83db76 : 00000001`00630688 00000001`03ff4f40 00007ff7`ad39e5e0 00000000`00000000 : 0x00007ff7`ae874e89 00000000`3abbe5c0 00007ff7`ae83c019 : 00000001`500a87c8 00000000`3abbf108 00007ff8`197abc30 00000000`00000000 : 0x00007ff7`ae83db76 00000000`3abbe910 00007ff7`aef70aa3 : 00000001`500a87c8 00007ff8`084c30f8 00000001`03fecaa0 00007ff8`084d9dd8 : 0x00007ff7`ae83c019 00000000`3abbeaf0 00007ff7`ae7fedf6 : 00000001`0062f338 00000001`805655d0 00000001`805655a0 00000000`00000001 : 0x00007ff7`aef70aa3 00000000`3abbeb30 00007ff7`ae83afdf : 00000001`c36dffe8 00000000`00000001 00000002`811d5588 00000001`c36e14a0 : 0x00007ff7`ae7fedf6 00000000`3abbec10 00007ff8`082b5ab3 : 00000001`c36e14a0 00000001`c36e14a0 00000000`3abbed90 00000000`00000000 : 0x00007ff7`ae83afdf 00000000`3abbed60 00007ff8`082b5944 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)$##6003AD5+0x163 00000000`3abbee30 00007ff8`082b5912 : 00000001`c36e1560 00000000`00000000 00000000`00000000 00000000`00000000 : mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)$##6003AD4+0x14 00000000`3abbee60 00007ff8`08c64bcc : 00000000`3abbf008 00007ff8`0a9570a2 00000000`00000012 00000000`3abbf158 : mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)$##6003AD3+0x52 00000000`3abbeeb0 00007ff8`0a956873 : 00000001`c36e1588 00000001`c36e14a0 00000000`00000000 00000000`00000000 : mscorlib_ni!System.Threading.ThreadHelper.ThreadStart(System.Object)$##6003BE4+0x5c 00000000`3abbeef0 00007ff8`0a956728 : 00000000`00000001 00007ff8`0a99c012 00000000`3abbf1c8 00000000`00000000 : clr!CallDescrWorkerInternal+0x83 00000000`3abbef30 00007ff8`0a956dfd : 00000000`00000002 00000000`3abbf0e8 00000000`3abbf108 00000000`3abbf1c8 : clr!CallDescrWorkerWithHandler+0x4e 00000000`3abbef70 00007ff8`0aa07079 : 00000000`3abbf940 00000000`3abbf880 00007ff8`0849b1e8 00000000`3abbf880 : clr!MethodDescCallSite::CallTargetWorker+0xf8 00000000`3abbf070 00007ff8`0a9575c1 : 00000000`00000001 00007ff8`0aa06f70 00000000`3abbf880 00000000`00000000 : clr!ThreadNative::KickOffThread_Worker+0x109 00000000`3abbf2d0 00007ff8`0a95753c : 00000000`3abbf880 00007ff8`0ab0c91c 00000000`3abbf300 00007ff8`18b8f3e3 : clr!ManagedThreadBase_DispatchInner+0x39 00000000`3abbf310 00007ff8`0a95746d : 00000000`00000000 00000000`00000000 00007ff8`0a959f70 00007ff8`0a955321 : clr!ManagedThreadBase_DispatchMiddle+0x6c 00000000`3abbf410 00007ff8`0a95a754 : 00000000`3abbf5e8 00000000`28e92730 00000000`3abbf880 00000000`28e92730 : clr!ManagedThreadBase_DispatchOuter+0x75 00000000`3abbf4a0 00007ff8`0a95a84e : 00000000`00000000 00000000`00000000 00000000`3abbfab0 00000000`00000001 : clr!ManagedThreadBase_DispatchInCorrectAD+0x15 00000000`3abbf4d0 00007ff8`0a95a7a3 : 00000000`00000000 00007ff8`00000002 00000000`00001000 00000000`3abbf880 : clr!Thread:oADCallBack+0x278 00000000`3abbf690 00007ff8`0a95753c : 00000000`3abbf880 00007ff8`0a955321 00000000`000e0000 00000000`00000018 : clr!ManagedThreadBase_DispatchInner+0x3223 00000000`3abbf6d0 00007ff8`0a95746d : 00000000`00000001 00000000`00000000 00000000`00000000 00000000`00000000 : clr!ManagedThreadBase_DispatchMiddle+0x6c 00000000`3abbf7d0 00007ff8`0a9575fb : ffffffff`ffffffff 00000000`28e92730 00000000`28e92730 00000000`299bbb40 : clr!ManagedThreadBase_DispatchOuter+0x75 00000000`3abbf860 00007ff8`0aa06f5b : 00000000`28e92730 00000000`00000001 00000000`299bbb40 00000000`00000025 : clr!ManagedThreadBase_FullTransitionWithAD+0x2f 00000000`3abbf8c0 00007ff8`0aa7395f : 00000000`299bbb40 00000000`28e92730 00000000`3abbf918 00000000`00000000 : clr!ThreadNative::KickOffThread+0xdb 00000000`3abbf990 00007ff8`197384d4 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : clr!Thread::intermediateThreadProc+0x86 00000000`3abbfad0 00007ff8`1c0a1791 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14 00000000`3abbfb00 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21 SYMBOL_NAME: Ax32Serv!prPrinterDisplay::releaseRemoteRefs+9 MODULE_NAME: Ax32Serv IMAGE_NAME: Ax32Serv.exe STACK_COMMAND: ~39s ; .ecxr ; kb FAILURE_BUCKET_ID: NULL_CLASS_PTR_READ_c0000005_Ax32Serv.exe!prPrinterDisplay::releaseRemoteRefs OS_VERSION: 10.0.14393.3986 BUILDLAB_STR: rs1_release OSPLATFORM_TYPE: x64 OSNAME: Windows 10 FAILURE_ID_HASH: {5ccb74c3-eb4b-2bc5-a9f2-282b76b6a4f0} Followup: MachineOwner --------- 0:039> du 00000001`040059f4 00000001`040059f4 "Aotmakexref" 0:039> dq 00000000`3abbd590+8 00000000`3abbd598 00000001`040059f4 00000000`3a4ef0e0 00000000`3abbd5a8 00000004`00000000 00007ff7`0000ffdf 00000000`3abbd5b8 00007ff7`ad39f805 00000000`1de51c05 00000000`3abbd5c8 00000000`3a4ef0e0 00000000`00000000 00000000`3abbd5d8 00000000`00000003 00000005`00020200 00000000`3abbd5e8 00000005`1bb5df00 00050000`0000ffdf 00000000`3abbd5f8 00000000`00020000 00000000`00000000 00000000`3abbd608 00000000`00000000 00000000`00000000 0:039> dd 00000000`3abbd590+20 00000000`3abbd5b0 0000ffdf 00007ff7 ad39f805 00007ff7 00000000`3abbd5c0 1de51c05 00000000 3a4ef0e0 00000000 00000000`3abbd5d0 00000000 00000000 00000003 00000000 00000000`3abbd5e0 00020200 00000005 1bb5df00 00000005 00000000`3abbd5f0 0000ffdf 00050000 00020000 00000000 00000000`3abbd600 00000000 00000000 00000000 00000000 00000000`3abbd610 00000000 00000000 0000ffdf 00000000 00000000`3abbd620 00000000 00000000 3a4ef0e0 00000000 |
|
28.10.2021, 17:07 | #3 |
Участник
|
Утечка памяти. Проблема, которая проявляется не на конкретных данных, а на их сочетании дающем критичный объём.
У меня была как-то похожая ситуация, правда при других обстоятельствах Падает AOS при расчёте спецификации |
|
|
За это сообщение автора поблагодарили: Logger (5). |
01.11.2021, 11:40 | #4 |
Участник
|
Похоже проблема была в чем-то другом.
Сделал джобом пакетное задание которое состоит из отдельных Batch по одному на каждую ветку AOT. Все равно падает. Памяти хватает. В общем похоже на какой то хитрый глюк ядра. Пришлось собирать ссылки по отдельным веткам, а отчеты пропускать. Отдельно обновлять по ним будем, без пакета. |
|
|
За это сообщение автора поблагодарили: FrolovAndy (2). |
01.11.2021, 15:51 | #5 |
Участник
|
Цитата:
У меня пока только одно предположение - что-то происходит на уровне глобального кэша. Во всяком случае, для меня было открытие, что когда вызывается AOTmakeXref на некотором объекте, он вовсе на сразу сохраняет в перекрестных ссылках. Сначала копит некоторое количество, и только при его достижении сбрасывает в таблицу. А чтобы сразу после перестроения по объекту сбрасывал, это получается надо каждый раз вызывать xRefCreate::insertxReferences(boolean _removeCache). Так что пока думаю, если при накоплении набирает достаточно много "тяжелых" объектов, наверно там что-то и слетает. Сильно глубоко туда пока не лез, может чего не учел. Но грешить больше все равно не на что. |
|
|
За это сообщение автора поблагодарили: sukhanchik (4), S.Kuskov (5). |
01.11.2021, 16:14 | #6 |
Участник
|
Возможно и так.
Но у меня отчет совсем небольшой был. Попробуйте найти класс на котором валится (если он есть вообще). Тогда будет проще. |
|
03.11.2021, 23:14 | #7 |
Участник
|
Пробовал, но каждый раз на разных классах
Похоже, там есть какие-то классы действительно тяжелые, которые память отъедают, но падает видимо на том, на котором достигается критическая масса съеденной памяти |
|
Теги |
crash, crash dump, перекрестные ссылки |
|
|