Microsoft MVP성태의 닷넷 이야기
프리징 현상에 대한 고민 [링크 복사], [링크+제목 복사]
조회: 14031
글쓴 사람
임동찬 (dngchn.im at samsung.com)
홈페이지
첨부 파일
 

또 찾아뵙니다. ^^

일전에 말씀드린 저희쪽 제품 프리징 현상에 대한 문의입니다.

알고 계시듯, 정상적인 동작은 메인이 되는 wpf기반의 shell프로세스가 h, d 윈도서비스와 wcf 통신을 하며 동작합니다.

'다운 된다' '죽는다'는 표현만 듣다가 최근 동영상을 통해 정확히 해당 문제 현상을 확인한 결과,

화면의 모든 UI는 리프레쉬 되지 않습니다(현재 시간 표시가 되나, 멈춰있음)

마우스 포인터는 움직입니다만, 화면 영역에 따라 포인터 모양이 변경되지 않고, 버튼 클릭도 되지 않습니다.

로그기록으로 확인한 결과, 문제 현상 발생 시 shell 프로세스만 죽은듯 합니다. (각 프로세스가 주기적으로 남기는 로그가, 해당 시간에 shell에 대한 로그만 없는 것으로 보아).

문제 발생 이전, 메모리가 증가한다던가, exception이 발생하는 특이 사항도 없습니다.

현재는 해당 문제 발생 시간 동안 입력된 데이터를 입수하여 시뮬레이션하여 실행해보는데, 재현 되지 않습니다.

분명 여러차례 반복되는 현상이라서, 사용자가 특정 동작을 실행시켰다거나 한다면, 그러한 보고가 있었을텐데, 그런 정보도 없구요.

정보가 많이 부족하지만, 만약 위와 같은 경우라면, 윈도우로 빠져나와 shell 프로세스에 대한 덤프를 남길 수 있을까요?

아니면, process가 완전히 종료되어 덤프조차 남길 수 없을까요?

어디서부터 접근해야 할지 막막하네요. 조언 부탁드립니다.








[최초 등록일: ]
[최종 수정일: 10/16/2013]


비밀번호

댓글 작성자
 



2013-10-16 04시34분
현상으로 봐서는 얼핏 GDI 핸들이 바닥났을 때의 상황과 유사한 것 같습니다. 그런 상황이라면 윈도우로 빠져나가도 GDI 리소스 부족으로 UI 제어를 할 수가 없을 것입니다. 만약 정말로 GDI 부족이 맞다면 프로세스 자체는 살아 있기 때문에 다른 동작은 가능합니다. 일단, 주기적으로 (5분 또는 10분 간격)으로 프로세스의 리소스를 로깅하는 것으로 확인을 해보는 것이 좋을 듯 싶습니다. GDI 핸들은 native 영역이기 때문에 닷넷 BCL에서 직접 구할 수 있는 방법은 없습니다.

대신 아래의 글을 보면,

GDI handles in a DotNET application
; http://stackoverflow.com/questions/2483011/gdi-handles-in-a-dotnet-application

GetGuiResources Win32 API를 호출해서 알아오는 방법이 나오기 때문에 이를 참조하시면 쉽게 GDI 핸들 수를 로깅할 수 있습니다.

해당 응용 프로그램을 장시간 띄워놓고, GDI 핸들의 추이를 살펴보면 되겠습니다. 아울러, 현장에서의 문제 발생 시 로깅 결과를 통해서 문제를 확실하게 조사하는 것도 좋겠고요.
정성태
2013-10-17 10시04분
[임동찬] 관련 파일의 덤프입니다. 대략 어떤 내용인지 확인 부탁드립니다. 처음 windbg를 쓰다보니, 뭐가 제대로 된건지 잘 모르겠네요.

0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************

Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of mscorwks.dll is
                in the version directory
            3) or, if you are debugging a dump file, verify that the file
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll. .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to mscorwks.dll as well.
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of mscorwks.dll is
                in the version directory
            3) or, if you are debugging a dump file, verify that the file
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll. .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to mscorwks.dll as well.

FAULTING_IP:
+2b02faf01a7df58
00000000 ?? ???

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD: 0000052c

DEFAULT_BUCKET_ID: WRONG_SYMBOLS

PROCESS_NAME: EcdisShell.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

MOD_LIST: <ANALYSIS/>

NTGLOBALFLAG: 0

APPLICATION_VERIFIER_FLAGS: 0

MANAGED_STACK: !dumpstack -EE
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of mscorwks.dll is
                in the version directory
            3) or, if you are debugging a dump file, verify that the file
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll. .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to mscorwks.dll as well.

PRIMARY_PROBLEM_CLASS: WRONG_SYMBOLS

BUGCHECK_STR: APPLICATION_FAULT_WRONG_SYMBOLS

LAST_CONTROL_TRANSFER: from 16ea93b4 to 16ea399d

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0012b328 16ea93b4 00000001 fffffde7 0012bba4 XGeo+0x399d
0012bbf8 16ea9e3e 0012be38 0012bdc4 16e93d5c XGeo+0x93b4
0012bc1c 16ea9d30 16e93d5c 0012bc4c 0012be10 XGeo+0x9e3e
0012bc98 16ea9f07 16e93d5c 0012be38 0012be10 XGeo+0x9d30
0012bd98 16eaa5ee 16e93d5c 0012be38 0012bdc4 XGeo+0x9f07
0012be40 16ea5665 88010e98 19793542 0012c1e4 XGeo+0xa5ee
0012be58 16eaae5d 0012c1e4 00000064 197aa830 XGeo+0x5665
0012c03c 7c94005d 0000000a 19808c48 00000024 XGeo+0xae5d
0012c100 16f0021c 0012c1a4 7c93e920 7c9401e0 ntdll!RtlFreeHeap+0x647
0012c114 7c9401db e0aafdc8 0012c1b0 16eabb55 XGeo!DllUnregisterServer+0x3d6d5
0012c384 7c94019b 7c940101 7c9400c4 00000010 ntdll!RtlAllocateHeap+0xeac
0012c668 16ea5e0f 16f94948 78140000 405f17d3 ntdll!RtlAllocateHeap+0x1c2
0012c784 79f18cb1 0ba5b538 0012c7a0 e0aafa50 XGeo+0x5e0f
0012c9bc 0435141a 001601b8 0012ca10 cfe480f8 mscorwks!CLRToCOMWorker+0x14f
0012c9f8 1f68a89f 0012d688 0ba5b180 0012de7c 0x435141a
0012d710 7c94005d 0f7adf70 0f850000 00000000 0x1f68a89f
0012d8c0 1f68034f f7e60000 405f220d 8f840000 ntdll!RtlFreeHeap+0x647
0012d988 578548e9 0c6fe61c 01ccdcc0 01ccdcc0 0x1f68034f
0012da80 79eb272d 79eb2745 b3320cc8 0c6fdfdc WindowsBase_ni+0xa48e9
0012de4c 79e71b4c 0c61c99c 00000000 00000000 mscorwks!AppDomainNative::GetId+0xef
0012de60 79e8968e 0012df34 00000001 0012df00 mscorwks!CallDescrWorker+0x33
0012dee0 79e96d11 0012df34 00000001 0012df00 mscorwks!CallDescrWorkerWithHandler+0xa3
0012e028 79e96d44 7925473c 0012e184 0012e080 mscorwks!MethodDesc::CallDescr+0x19c
0012e044 79e96d62 7925473c 0012e184 0012e080 mscorwks!MethodDesc::CallTargetWorker+0x1f
0012e05c 79fceef1 0012e080 0012e23c 79fbb3cb mscorwks!MethodDescCallSite::CallWithValueTypes+0x1a
0012e248 79fcf052 790fe7b0 0ba5cbe8 0c6fe124 mscorwks!InvokeImpl+0x550
0012e308 792d5428 074ed450 000001c6 0012e324 mscorwks!RuntimeMethodHandle::InvokeMethodFast+0xbd
0012e358 792d51d6 074ed450 000001c6 0c61ec40 mscorlib_ni+0x215428
0012e390 792d6665 00000001 00000000 0c61e8e4 mscorlib_ni+0x2151d6
0012e3b8 7975df04 0012e460 1811cdf9 0c247f9c mscorlib_ni+0x216665
0012e3e4 7c966d80 7c9401db 05e6a648 0c6fe084 mscorlib_ni+0x69df04
0012e460 1811cbd2 00000001 00000000 013de760 ntdll!RtlpLowFragHeapAlloc+0xc84
0012e490 79e71b4c 014fdcec 00000000 0012e520 0x1811cbd2
0012e4a0 79e8968e 0012e570 00000000 0012e540 mscorwks!CallDescrWorker+0x33
0012e520 79e96d11 0012e570 00000000 0012e540 mscorwks!CallDescrWorkerWithHandler+0xa3
0012e658 79e96d44 075759d8 0012e7ac 0012e6b0 mscorwks!MethodDesc::CallDescr+0x19c
0012e674 79e96d62 075759d8 0012e7ac 0012e6b0 mscorwks!MethodDesc::CallTargetWorker+0x1f
0012e68c 79fceef1 0012e6b0 0012e864 79fbb3cb mscorwks!MethodDescCallSite::CallWithValueTypes+0x1a
0012e870 79fcf052 17d39600 0c6fbdf0 0c6f75ec mscorwks!InvokeImpl+0x550
0012e930 792d5428 17d39644 000001c6 0012e94c mscorwks!RuntimeMethodHandle::InvokeMethodFast+0xbd
0012e980 792d51d6 17d39644 000001c6 0c61ea80 mscorlib_ni+0x215428
0012e9b8 792d6665 00000001 00000000 0c61e4a0 mscorlib_ni+0x2151d6
0012e9e0 5784727b 0c6f8b3c 00000001 00000000 mscorlib_ni+0x216665
0012e9fc 578470ea 00000000 0c61e4a0 00000000 WindowsBase_ni+0x9727b
0012ea3c 578452b4 00000000 00000000 0c6fbe10 WindowsBase_ni+0x970ea
0012ea60 5784a12d 00000000 00000000 0c6fbe10 WindowsBase_ni+0x952b4
0012ea98 5784a0b8 0c6f74e8 792f5781 00000000 WindowsBase_ni+0x9a12d
0012eab0 79e71b4c 00000000 0012eb74 0012eb40 WindowsBase_ni+0x9a0b8
0012eac0 79e8968e 0012eb90 00000000 0012eb60 mscorwks!CallDescrWorker+0x33
0012eb40 79e96d11 0012eb90 00000000 0012eb60 mscorwks!CallDescrWorkerWithHandler+0xa3
0012ec7c 79e96d44 79241ff0 0012edb0 0012ecd0 mscorwks!MethodDesc::CallDescr+0x19c
0012ec98 79e96d62 79241ff0 0012edb0 0012ecd0 mscorwks!MethodDesc::CallTargetWorker+0x1f
0012ecb0 79ef2c29 0012ecd0 b3323998 001601b8 mscorwks!MethodDescCallSite::CallWithValueTypes+0x1a
0012ee7c 79ef2d7e 0012ef0c b33238c8 0c6f7530 mscorwks!ExecuteCodeWithGuaranteedCleanupHelper+0x9f
0012ef2c 792f5677 0012eed0 0c6fbe58 013381ac mscorwks!ReflectionInvocation::ExecuteCodeWithGuaranteedCleanup+0x10f
0012ef48 792e02a5 0c61e4b4 00000000 0c61e4b4 mscorlib_ni+0x235677
0012ef60 57849ff3 0c61e4b4 00000000 00000000 mscorlib_ni+0x2202a5
0012ef9c 57844957 7a3442a0 ffffffff 79e8ca77 WindowsBase_ni+0x99ff3
0012f078 57844c43 00000000 00000000 01337a10 WindowsBase_ni+0x94957
0012f0b4 578473de 01338048 00000000 00000000 WindowsBase_ni+0x94c43
0012f100 5784730a 01338048 00000000 00000000 WindowsBase_ni+0x973de
0012f120 578471fa 01338030 00000001 00000001 WindowsBase_ni+0x9730a
0012f13c 578470ea 00000001 01338030 00000000 WindowsBase_ni+0x971fa
0012f17c 578452b4 00000000 00000001 01338030 WindowsBase_ni+0x970ea
0012f1a0 57844411 00000000 00000001 01338030 WindowsBase_ni+0x952b4
0012f1dc 57844360 00000001 01338030 01338010 WindowsBase_ni+0x94411
0012f20c 57846a4c 01338030 01338010 003b2182 WindowsBase_ni+0x94360
0012f25c 77cf8734 002d029a 0000c09c 00000000 WindowsBase_ni+0x96a4c
0012f288 77cf8816 003b21b2 002d029a 0000c09c user32!InternalCallWinProc+0x28
0012f2f0 77cf89cd 00000000 003b21b2 002d029a user32!UserCallWinProcCheckWow+0x150
0012f350 77cf8a10 0012f3b0 00000000 0012f37c user32!DispatchMessageWorker+0x306
0012f360 043516a2 0012f3b0 cfe480f8 00000000 user32!DispatchMessageW+0xf
0012f37c 57844a57 01337a10 0012f3b0 009e2010 0x43516a2
0012f3ec 57844129 01592990 0012f404 578440cc WindowsBase_ni+0x94a57
0012f3f8 578440cc 013321ec 0012f410 55bed1ae WindowsBase_ni+0x94129
0012f404 55bed1ae 013321ec 0012f434 55bec4af WindowsBase_ni+0x940cc
0012f410 55bec4af 0151abec 79e7bdf6 792e49e8 PresentationFramework_ni+0x1cd1ae
0012f434 55bd3796 013321ec 00000000 0012f450 PresentationFramework_ni+0x1cc4af
0012f444 55bd3759 001601b8 0012f460 03b600bc PresentationFramework_ni+0x1b3796
0012f460 79e71b4c 0045791e 00000001 0012f4f0 PresentationFramework_ni+0x1b3759
0012f470 79e8968e 0012f540 00000000 0012f510 mscorwks!CallDescrWorker+0x33
0012f4f0 79e96d11 0012f540 00000000 0012f510 mscorwks!CallDescrWorkerWithHandler+0xa3
0012f634 79e96d44 009ec598 0012f700 0012f6cc mscorwks!MethodDesc::CallDescr+0x19c
0012f650 79e96d62 009ec598 0012f700 0012f6cc mscorwks!MethodDesc::CallTargetWorker+0x1f
0012f668 79f20881 0012f6cc b3322028 00000000 mscorwks!MethodDescCallSite::CallWithValueTypes+0x1a
0012f7cc 79f207a1 009e888c 00000001 0012f808 mscorwks!ClassLoader::RunMain+0x223
0012fa34 79f20cf1 00000000 b33228e0 00000001 mscorwks!Assembly::ExecuteMainMethod+0xa6
0012ff04 79f20edb 00400000 00000000 b33228b0 mscorwks!SystemDomain::ExecuteMainMethod+0x456
0012ff54 79f20e0b 00400000 b3322878 00370035 mscorwks!ExecuteEXE+0x59
0012ff9c 7900b77b 00360034 79e70000 0012ffb8 mscorwks!_CorExeMain+0x15c
0012ffac 7900b73d 00000000 0012fff0 79004de3 mscoree!_CorExeMain+0x2e
0012ffb8 79004de3 00360034 7c7e7077 00370035 mscoree!ShellShim__CorExeMain+0x29
0012ffc0 7c7e7077 00370035 00360034 7ffd3000 mscoree!_CorExeMain_Exported+0x8
0012fff0 00000000 79004ddb 00000000 78746341 kernel32!BaseProcessStart+0x23


STACK_COMMAND: ~0s; .ecxr ; kb

FOLLOWUP_IP:
XGeo+399d
16ea399d 8955fc mov dword ptr [ebp-4],edx

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: XGeo+399d

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: XGeo

IMAGE_NAME: XGeo.dll

DEBUG_FLR_IMAGE_TIMESTAMP: 521259cc

FAILURE_BUCKET_ID: WRONG_SYMBOLS_80000003_XGeo.dll!Unknown

BUCKET_ID: APPLICATION_FAULT_WRONG_SYMBOLS_XGeo+399d

WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/EcdisShell_exe/1_0_0_53/525d010c/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1

Followup: MachineOwner
---------
[guest]
2013-10-17 02시35분
우선 mscordacwks DLL이 제대로 된 버전이 없어서 analyze가 제대로 분석을 못했습니다. 아래의 글을 보시고 맞춰주시고, 다시 한번 analyze 해보세요.

windbg의 mscordacwks DLL 로드 문제 - 두번째 이야기
; http://www.sysnet.pe.kr/2/0/1375
정성태
2013-10-21 07시30분
[임동찬] 혹시 이 문제 관련 제 메일 못보셨는지요? 덧글쓰기가 안되어 보낸 메일이 있습니다만...
[guest]
2013-10-21 02시33분
답장 메일 드렸습니다. ^^
정성태

... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...
NoWriterDateCnt.TitleFile(s)
4770누구게~...10/15/201611629세도나 [1]
4769spow...10/13/201610446올리시는 게시물에 '좋아요'를 선택할 수 있도록 해주세요 [3]
4768브라운10/11/201612194질문 하나만 드려도 될까요 [4]
4767암호군10/4/201616556c# aes 128 암복호화 관련 문의드립니다. [3]
4766김신철9/29/201611415Visual Studio 2015에서 .net 3.5로 c# 6.0 사용시 문제점에 대해서 궁금합니다. [1]
4765spow...9/23/201610836참조를 통해 속성의 값을 변경하고 싶을 때 우아한 코딩 방법이 있을까요? [2]
4764지현명9/22/201612394Visual Studio 2008 c#에서 추가된 솔류션의 디버깅이 안걸립니다. [2]파일 다운로드1
4763송기태9/20/201611149안녕하세요! 질문이 있어 문의드립니다! [1]파일 다운로드1
4762김신철9/20/201612274Visual Studio 2015 마이그레이션 후 빌드 및 에러 문제.. 도와주세요~ [2]
4761JH9/19/201612670WPF로 Viewbox 사용 시 폰트 크기 일정화 여부 [1]
4760초보9/18/201612600유닉스서버(HP)에서 C# 서버 프로그램 실행 가능 한지요? [1]
4759dev009/16/201613397Queue out of memory [3]
4758임기성9/12/201612977MS오피스 워드 64비트에서 32비트 COM개체 사용방법 문의 [2]
4757조영준9/7/201611014DLL 후킹과 관련해서 질문이 있습니다. [2]
4756Kim ...9/6/201613068drag&drop 관련해서 문의 드립니다. [6]
4755stel...9/4/201611918안녕하세요! 윈도우 창에 관련되서 질문입니다.! [3]
4754초보개발자8/25/201610799UWP 의 적용 범위에 대해서 어떻게 생각하십니까? [1]
4753조호찬8/23/201615671sybase 의 한글 가져오기 문의 [7]
4752타미플루8/19/201611296IIS 로그에서 time-taken이 0이 나올수 있나요? [4]
4751김민석8/16/201611486가변크기의 구조체를 SendMessage로 타 프로세스에 전송하는 방법이 있을까요? [1]
4750강준8/13/201613061ElementHost Memory Leak 현상 (아래내용과 동일 첨부 추가^^) [5]파일 다운로드1
4749강준8/11/201612079ElementHost Memory Leak 현상 [6]
4748Bere...8/3/201610940그냥 생각이 들어서 여기 글 써봅니다. [1]
4746힘찬도약8/2/201611203[asp.net] local에서 cookies값이 읽혀지지 않는 경우 [1]
4747힘찬도약8/3/201611938    답변글 [예제 첨부]: [asp.net] local에서 cookies값이 읽혀지지 않는 경우 [3]파일 다운로드1
4745힘찬도약7/27/201612038.NET 자식창 데이터를 부모창에 전달시 오류 질문드립니다. [4]파일 다운로드1
... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...