Как отладить сбой недетерминированного нарушения доступа? - PullRequest
0 голосов
/ 16 апреля 2010

Наше приложение на C # / COM / C ++ падает, и мне нужна помощь в его отладке.Работая с включенным gflags и присоединенным WinDbg, мы определили, что сбои вызваны нарушением доступа, но мы не смогли сузить его больше, чем это.Мы не видим проблему на всех машинах;Есть несколько машин, которые, кажется, воспроизводят проблему часто, но не детерминировано.Мы наблюдали сбой приложения при простом переключении из приложения (скажем, Alt-Tab) и затем обратно.Выходные данные WinDbg приведены ниже.

Мы пытались систематически комментировать области кода, которые могут вызывать проблему, но мы пока не достигли большого успеха.

Есть предложения о том, чтошаги или инструменты отладки, которые мы должны попробовать?

! анализ -v

EXCEPTION_RECORD: ffffffff - (.exr 0xffffffffffffffff) Исключительный адрес: 1a584ff2 (+ 0x1a584ff1)
Код исключения:(Нарушение доступа) ExceptionFlags: 00000000 NumberParameters: 2 Параметр [0]: 00000000 Параметр [1]: 1a584ff2 Попытка чтения с адреса 1a584ff2

PROCESS_NAME: ProcessFiles.exe

ERROR_CODE: (NTSTATUS)0xc0000005 - Инструкция на 0x% 08lx ссылается на память на 0x% 08lx.Память не может быть% s.

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - Инструкция на 0x% 08lx ссылается на память на 0x% 08lx.Память не может быть% s.

EXCEPTION_PARAMETER1: 00000000

EXCEPTION_PARAMETER2: 1a584ff2

READ_ADDRESS: 1a584ff2

FOLLOWUP_IP :ff1 1a2aa1aa1aa1aaa1aa1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?? вверх .: •: # #:: По 1???

NTGLOBALFLAG: 2000000

APPLICATION_VERIFIER_FLAGS: 0

IP_MODULE_UNLOADED: Ed20 + 1a584ff1 1a584ff2 ?????

MANAGED_STACK: (TransitionMU) 0EC6F6F4 7B1D8CCE System_Windows_Forms_ni! System.Windows.Forms.Application + ComponentManager.System_Windows_Forms_ni! System.Windows.Forms.Application + ThreadContext.RunMessageLoopInner (Int32, System.Windows.Forms.ApplicationContext) + 0x177 0EC6F7E4 7B1D8781 System_Windows_Forms_ni! System.Windows.Forms.Text.Forms.ApplicationContext) + 0x61 0EC6F814 7B195911 System_Windows_Forms_ni! System.Windows.Forms.Application.Run (System.Windows.Forms.Form) + 0x31 0EC6F828 0969D97A Extract_Utilities_Forms! Extract.Utilities.Forms.VersificationForm..A (System.Object) + 0x23a 0EC6F8C0 79A00EEE mscorlib_ni! System.Threading.ThreadHelper.ThreadStart_Context (System.Object) + 0x72a25e 0EC6F8CC 792E019F mscorlib_ni! System.Threadte.RunExecutionContext, System.Threading.ContextCallback, System.Object) + 0x6f 0EC6F8E4 797DB48A mscorlib_ni! System.Threading.ThreadHelper.

FAULTING_THREAD: FFFFFFFF

1038 * ADDITIONAL_DEBUG_TEXT: Followup набор на основе атрибута [ip_not_executable] из рамы: [0] на резьбе: [e30]
1040 * BUGCHECK_STR: APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK
1042 * PRIMARY_PROBLEM_CLASS: BAD_INSTRUCTION_PTR
1044 * DEFAULT_BUCKET_ID: BAD_INSTRUCTION_PTR
1046 * STACK_TEXT: 7b1d8cce System_Windows_Forms_ni система System.Windows.Forms.Application + ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop + 0xc 7b1d8937 System_Windows_Forms_ni!.Windows.Forms.Application + ThreadContext.RunMessageLoopInner + 0x0 7b1d8781 System_Windows_Forms_ni! System.Windows.Forms.Application + ThreadContext.RunMessageLoop + 0x0 7b195911System_Windows_Forms_ni! System.Windows.Forms.Application.Run + 0x31 0969d97a Extract_Utilities_Forms! Extract.Utilities.Forms.VerificationForm`1 [[System .__ Canon, mscorlib]]. A + 0x23a 79a00eee mscorlib_ni! System.Threading.ThreadHelper.ThreadStart_Context + 0x72a25e 792e019f mscorlib_ni! System.Threading.ExecutionContext.Run + 0x6F 797db48a mscorlib_ni! System.Threading.ThreadHelper.ThreadStart + 0x4a

STACK_COMMAND: .ecxr; ~~ [e30]; кадр 0; ** псевдо-контекст **; кб

FAILED_INSTRUCTION_ADDRESS: Ed20 + 1a584ff1 1a584ff2 ??
??? * * тысяча пятьдесят-две

SYMBOL_NAME: Ed20

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: Ed20

IMAGE_NAME: Ed20

DEBUG_FLR_IMAGE_TIMESTAMP: 0

FAILURE_BUCKET_ID: BAD_INSTRUCTION_PTR_c0000005_Ed20! Разгрузка

BUCKET_ID: APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK_BAD_IP_Ed20

Продолжение: MachineOwner

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

Найдите компьютер, который довольно часто воспроизводит сбой, и установите WinDbg на этот компьютер. Затем запустите windbg.exe -I, что сделает WinDbg обработчиком аварийного сбоя.

Подождите, пока произойдет сбой. Когда это произойдет, WinDbg автоматически откроется в момент сбоя. Используйте команду WinDbg kpn, чтобы получить трассировку стека. (Возможно, вам также необходимо убедиться, что на аппарате есть символы.)

0 голосов
/ 17 апреля 2010

Спасибо за ответы.

В итоге мы обнаружили проблему, оценивая все изменения кода со времени последней версии программного обеспечения (которая не вылетала). Виновным было то, что HideSelection устанавливалось в false в переопределении OnLostFocus текстового элемента управления. За этот пост - который вызывает плохие вещи (ну, на некоторых машинах, в любом случае).

...