c # — анализ дампа: модуль показан как неизвестный в трассировке стека, хотя все доступные символы

У меня проблема с последним анализом дампа, который я делаю. В нескольких файлах дампа, когда я использую команду:

!analyze -v

Я получаю информацию о стеке исключений. Это AccessViolationException. Стек выглядит примерно так:

00000000 00000000 unknown.dll!MyComLib.MyCtl.set_ShowInfo+0x1
0028dc5c 00000000 unknown.dll!AxMyComLib.AxCtl.set_ShowInfo+0x1a
0028dc68 00000000 unknown.dll!Company.Client.Utility.set_Options+0x35
0028dc78 00000000 unknown.dll!Company.Client.Utility.SetAvailable+0x1a
0028dc84 00000000 unknown.dll!Company.Client.System.client_Available+0x1df

Он вызывает из .NET в компонент COM ActiveX. Оба разработаны нами. И этот короткий callstack проходит через 3 DLL. .NET-> Wrapper-> Com (-> Error)

Я знаю модуль (и он не называется неизвестным;)).
У меня есть все символы, и они правильно установлены и загружены.

Если я использую u unknown.dll!MyComLib.MyCtl.set_ShowInfo+0x1 естественно, это не работает. Но даже если я заменю неизвестное на правильное имя модуля, это не сработает.

То, что я хотел бы узнать, является правильной исходной строкой, где выбрасывается исключение (+ 0x1).

Мои вопросы:
Почему он отображается как неизвестный?
Как я могу узнать, по какой строке кода возникает проблема?

У меня не было проблемы с «неизвестными» записями модуля в дампах, которые я анализировал.

Обновить

Еще немного информации:
Исключительные кадры в потоке 0 результат ~ 0kb1000:

ChildEBP RetAddr  Args to Child
0028ea28 72ac90f7 e0434352 00000001 00000005 KERNELBASE!RaiseException+0x58
0028eacc 72c00b0c 00000000 73dc63b0 0028eaf0 clr!RaiseTheExceptionInternalOnly+0x276
0028eae4 72c00d3d 00000004 0028ee98 72ac957e clr!RaiseTheException+0x86
0028eb0c 72c00d6d 00000004 004e4790 00000000 clr!RaiseTheExceptionInternalOnly+0x30a
0028eb40 72d03512 00184270 004e4790 00000000 clr!RealCOMPlusThrow+0x2f
0028eb98 72d03a75 0028eda8 00184270 00184270 clr!ThrowInvokeMethodException+0xac
0028eea4 71c03781 00000000 027d25d4 71c0b790 clr!RuntimeMethodHandle::InvokeMethod+0xa64
0028eec8 71c38f9d 00000000 00000000 027d24a8 mscorlib_ni+0x2d3781
0028ef18 729e2952 004e4790 0028ef78 72a0318f mscorlib_ni+0x308f9d
0028ef24 72a0318f 0028efc4 0028ef68 72ac957e clr!CallDescrWorkerInternal+0x34
0028ef78 72a039d5 0028f0c0 00000001 00000000 clr!CallDescrWorkerWithHandler+0x6b
0028eff8 72aaef24 0028f0f4 11ce1352 001837d8 clr!MethodDescCallSite::CallTargetWorker+0x152
0028f124 72aaf048 00000000 00000001 11ce134e clr!RunMain+0x1aa
0028f398 72b0a484 00000000 11ce11de 013c0000 clr!Assembly::ExecuteMainMethod+0x124
0028f89c 72b0a527 11ce1a8e 00000000 00000000 clr!SystemDomain::ExecuteMainMethod+0x614
0028f8f8 72b0a63a 11ce1b4e 00000000 00000000 clr!ExecuteEXE+0x4c
0028f938 72b0c3c2 11ce1b02 00000000 00000000 clr!_CorExeMainInternal+0xdc
0028f974 7308f5a3 11cee72d 00000000 76371222 clr!_CorExeMain+0x4d
0028f9ac 73107efd 0028f9c4 73107f16 00000000 mscoreei!_CorExeMain+0x10a
0028f9c4 73104de3 00000000 7637337a fffde000 mscoree!ShellShim__CorExeMain+0x7d
0028f9cc 7637337a fffde000 0028fa18 77809882 mscoree!_CorExeMain_Exported+0x8
0028f9d8 77809882 fffde000 64decd1b 00000000 kernel32!BaseThreadInitThunk+0xe
0028fa18 77809855 73104ddb fffde000 00000000 ntdll!__RtlUserThreadStart+0x70
0028fa30 00000000 73104ddb fffde000 00000000 ntdll!_RtlUserThreadStart+0x1b

~*e!clrstack не имеет никакой информации, связанной с исключениями в темах. !dumpstack ни.

!threads показывает:

       ID OSID ThreadOBJ    State GC Mode     GC Alloc Context  Domain   Count Apt Exception
0    1 21e8 004e4790     26020 Preemptive  73DF4F30:00000000 004dd3a0 0     STA System.Reflection.TargetInvocationException 73dc63b0

когда я !pe пока я не получу внутреннее исключение, это стек AccessViolationException с самого начала вопроса.

Обновление 2
~0e !clrstack показывает:

0028eb24 74f6c42d [GCFrame: 0028eb24]
0028eb5c 74f6c42d [GCFrame: 0028eb5c]
0028ebe0 74f6c42d [HelperMethodFrame_PROTECTOBJ: 0028ebe0] System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
0028eeb4 71c03781 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
0028eed8 71c38f9d System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
0028ef18 0033005f Program.Main() [d:\prg\Program.cs @ 20]
0028f0a4 729e2952 [GCFrame: 0028f0a4]

Исключение было (- sic! :() относительно хорошо воспроизводить на тестовом ПК. К сожалению, не на машине разработчика (с подключенным отладчиком или без него). В настоящее время оно исчезло снова. У меня есть около 6 дампов, которые показывают одно и то же исключение почти такая же трассировка стека.

Обновление 3
!teb показывает следующую информацию в потоке 0:

TEB at fffdd000
ExceptionList:        0028eabc
StackBase:            00290000
StackLimit:           00283000
SubSystemTib:         00000000
FiberData:            00001e00
ArbitraryUserPointer: 00000000
Self:                 fffdd000
EnvironmentPointer:   00000000
ClientId:             000016e8 . 000021e8
RpcHandle:            00000000
Tls Storage:          0ca60888
PEB Address:          fffde000
LastErrorValue:       6
LastStatusValue:      c0000034
Count Owned Locks:    0
HardErrorMode:        0

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]