Subversion, Trac, CruiseControl.NET 구축과 운영에 관한 유료 컨설팅 및 기술지원을 해드립니다.
- 서버 구성 및 구축, 운영 방법
- 빌드 스크립트 작성 및 활용, 자동화 구축
- 가상머신 연동
- 고급 Subversion 활용 강의
- 트러블 슈팅
- 백업 및 복구
- 저장소 마이그레이션 (볼랜드 스타팀 등)
- 자동화 프로젝트 구성
- 교육



*** An Access Violation occurred in C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16:
The instruction at 7C9401B3 tried to write to an invalid address, 75DE193E
*** enter .exr 018FECE8 for the exception record
*** enter .cxr 018FED04 for the context
*** then kb to get the faulting stack
Break instruction exception - code 80000003 (first chance)
ntdll!DbgBreakPoint:
001b:7c93120e cc int 3
1: kd> !analyze -v
FAULTING_IP:
ntdll!RtlAllocateHeap+1da
001b:7c9401b3 884706 mov byte ptr [edi+6],al
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c93120e (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 3
Parameter[0]: 00000000
Parameter[1]: 7c997810
Parameter[2]: 00000028
ERROR_CODE: (NTSTATUS) 0x80000003 - {
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) -
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 7c997810
EXCEPTION_PARAMETER3: 00000028
NTGLOBALFLAG: 0
FAULTING_THREAD: ffffffff
ADDITIONAL_DEBUG_TEXT: Enable Pageheap/AutoVerifer
DEFAULT_BUCKET_ID: HEAP_CORRUPTION
PRIMARY_PROBLEM_CLASS: HEAP_CORRUPTION
BUGCHECK_STR: APPLICATION_FAULT_HEAP_CORRUPTION_STATUS_BREAKPOINT
LAST_CONTROL_TRANSFER: from 75df2137 to 7c9401b3
STACK_TEXT:
7c9401b3 ntdll!RtlAllocateHeap+0x1da
75df2137 sxs!CSxsPointerBase<CXMLNamespaceManager::CNamespacePrefix,CSxsPointer<CXMLNamespaceManager::CNamespacePrefix,CXMLNamespaceManager::CNamespacePrefix::ms_szTypeName> >::HrAllocateBase+0x59
75de2f21 sxs!CXMLNamespaceManager::OnCreateNode+0x12e
75de38d2 sxs!CNodeFactory::CreateNode+0xa3
75de435f sxs!XMLParser::Run+0x2fc
75de8baa sxs!SxspIncorporateAssembly+0x8b8
75de9a0f sxs!SxspCloseManifestGraph+0x98
75de98cd sxs!SxsGenerateActivationContext+0x54c
75a9a5ed basesrv!BaseSrvSxsCreateActivationContextFromStruct+0x194
75a9a760 basesrv!BaseSrvSxsCreateActivationContextFromMessage+0x79
75a84a47 CSRSRV!CsrApiRequestThread+0x431
STACK_COMMAND: .cxr 018FED04 ; kb ; dds 18fefd0 ; kb
SYMBOL_NAME: heap_corruption!heap_corruption
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: heap_corruption
IMAGE_NAME: heap_corruption
DEBUG_FLR_IMAGE_TIMESTAMP: 0
FAILURE_BUCKET_ID: HEAP_CORRUPTION_80000003_heap_corruption!heap_corruption
BUCKET_ID: APPLICATION_FAULT_HEAP_CORRUPTION_STATUS_BREAKPOINT_heap_corruption!heap_corruption
Followup: MachineOwner
---------1: kd> g
*** Fatal System Error: 0xc000021a
(0xE10C62F8,0xC0000005,0x7C9401B3,0x018FED04)
STOP: c000021a Unknown Hard Error
Unknown Hard ErrorBreak instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck C000021A, {e10c62f8, c0000005, 7c9401b3, 18fed04}
unable to get nt!KiCurrentEtwBufferOffset
unable to get nt!KiCurrentEtwBufferBase
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
WINLOGON_FATAL_ERROR (c000021a)
The Winlogon process terminated unexpectedly.
Arguments:
Arg1: e10c62f8, String that identifies the problem.
Arg2: c0000005, Error Code.
Arg3: 7c9401b3
Arg4: 018fed04
Debugging Details:
------------------
unable to get nt!KiCurrentEtwBufferOffset
unable to get nt!KiCurrentEtwBufferBase
... 생략 ...
ERROR_CODE: (NTSTATUS) 0xc000021a - {
EXCEPTION_CODE: (NTSTATUS) 0xc000021a - {
EXCEPTION_PARAMETER1: e10c62f8
EXCEPTION_PARAMETER2: c0000005
EXCEPTION_PARAMETER3: 7c9401b3
EXCEPTION_PARAMETER4: 18fed04
ADDITIONAL_DEBUG_TEXT: Windows SubSystem
BUGCHECK_STR: 0xc000021a_csrss.exe_c0000005
DEFAULT_BUCKET_ID: DRIVER_FAULT
PROCESS_NAME: System
LAST_CONTROL_TRANSFER: from 8085f2bf to 8080ba52
SYMBOL_ON_RAW_STACK: 1
STACK_ADDR_RAW_STACK_SYMBOL: fffffffff78d2b8c
STACK_COMMAND: dds F78D2B8C-0x20 ; kb
STACK_TEXT:
f78d2b6c 8a2e8240
f78d2b70 00000000
f78d2b74 e165e4f8
f78d2b78 e15ae350
f78d2b7c e165e488
f78d2b80 00000000
f78d2b84 00000000
f78d2b88 b78268a4 mrxdav!_NULL_IMPORT_DESCRIPTOR+0x3c
f78d2b8c b77fe000 mrxdav!MrxDAVEfsControlCompletion <PERF> (mrxdav+0x0)
f78d2b90 808cf973 nt!MiSnapThunk+0x6f
f78d2b94 8a32c008
f78d2b98 b782735e mrxdav!_NULL_IMPORT_DESCRIPTOR+0xaf6
f78d2b9c 000000ff
f78d2ba0 b78268a4 mrxdav!_NULL_IMPORT_DESCRIPTOR+0x3c
f78d2ba4 b7804aa8 mrxdav!_imp__GetSecurityUserInfo
f78d2ba8 808cfae6 nt!MiSnapThunk+0x382
f78d2bac 00000001
f78d2bb0 00000000
f78d2bb4 b77fe000 mrxdav!MrxDAVEfsControlCompletion <PERF> (mrxdav+0x0)
f78d2bb8 f78ee924
f78d2bbc b7804aa8 mrxdav!_imp__GetSecurityUserInfo
f78d2bc0 b78274ba mrxdav!_NULL_IMPORT_DESCRIPTOR+0xc52
f78d2bc4 00000000
f78d2bc8 e165e301
f78d2bcc f7477958 KSecDD!DESParityTable <PERF> (KSecDD+0x14958)
f78d2bd0 00000000
f78d2bd4 0000000e
f78d2bd8 b7827372 mrxdav!_NULL_IMPORT_DESCRIPTOR+0xb0a
f78d2bdc 8a2e8240
f78d2be0 f78ee9b4
f78d2be4 f7b774ba Ntfs!NtfsFsdClose+0x3b0
f78d2be8 8a0c1978
FOLLOWUP_IP:
mrxdav!_NULL_IMPORT_DESCRIPTOR+3c
b78268a4 5c pop esp
SYMBOL_NAME: mrxdav!_NULL_IMPORT_DESCRIPTOR+3c
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: mrxdav
IMAGE_NAME: mrxdav.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 41107b91
FAILURE_BUCKET_ID: 0xc000021a_csrss.exe_c0000005_mrxdav!_NULL_IMPORT_DESCRIPTOR+3c
BUCKET_ID: 0xc000021a_csrss.exe_c0000005_mrxdav!_NULL_IMPORT_DESCRIPTOR+3c
Followup: MachineOwner
---------

"자네, 지금부터 자리에서 일어나서 '할 수 있다'는 구호를 100번 외쳐보게."
"두배 더 오래 일 하라"
"납기일은 무조건 다른 회사의 절반으로 한다"
"이 모터의 크기를 반으로 줄여달라. 석 달 안에 반으로 줄일 수 있다면, 당신 회사와 거래하겠다."
나가모리 사장은 우선 '가능하다'는 말부터 튀어나왔다.
"진심으로 관심이 있어 들여다보고 살펴보며 깊이 관찰한 결과로 나무라거나 혼내는 것은, 그 직원에 대한 깊은 관심 덕분이다. ...(중략)... 물질적인 보상 혹은 립 서비스식의 칭찬 이외에는 달리 관심을 표할 만한 열정이 없는 사람일수록 칭찬을 남발하게 돼 있다." 139P
"적당한 칭찬으로 상대가 의기충전해질 것이라고 오해한다. 그런식의 속보이는 칭찬으로 '그럭저럭 잘해줄' 인재는 드물다. '회사에 엄청난 공헌을 했다며' 창립 기념일에 표창과 상장을 주면서 격려하면 직원이 의욕이 배가되어 죽을 둥 살 둥 열심히 일 할까? 물론 그런 장치도 반드시 필요하다. 하지만 인재는 저절로 크거나 알아서 자라는 것이 아니다. 경영자의 노력 없이 '백마타고 온 왕자처럼' 하늘에서 갑자기 나타나 부진에 빠진 회사를 구해줄 리 만무하다는 말이다." 148P
"회사를 키우고 활력 있는 조직으로 유지하기 위해서는 가점주의가 필요하다. 특히 중견 기업이나 중소기업들은 감점주의를 도입하면 머지않아 인재가 아무도 남지 않는다. 제대로 하려고 하는 사람의 발목까지 잡는 게 감점주의다. 도약하는 기업을 만들려면 가점주의로 운영해야 한다." 165P
감점주의 문화에서는 "적극적으로 새로운 도전을 시도하다가 실패한 직원보다, 새로운 것을 전혀 시도하지 않아 실패할 턱이 없는 직원이 훨씬 높은 평가를 받게 되는 어처구니 없는 결과를 낳기도 한다." 166P
"기업이 직원에게 해줄 수 있는 최고의 복지는 '교육'" 189P
"누구나 인재가 중요하다는 사실 정도는 익히 잘 알고 있다. 어느 나라를 막론하고 기업이 침체에 빠지거나 성장하지 못할 때 마다 대부분 '인재 부족'을 그 원인으로 꼽는다. 그렇다면 직원들 입장에선 어떨까? 그들에게 물어보면 하나같이 '경영진의 무능력'을 꼬집는다. 이렇게 패배자들은 남을 탓하는데 익숙해져 있다." 230P
"사장이 정신을 놓으면 '아무리 유능한 인재가 모여 있다 해도', 삼류 오합지졸로 바뀌는 것은 시간 문제다. 직원이 정신을 놓으면 경영자가 아무리 훌륭한 회사를 만들겠다고 결심해도 그 발걸음 마다 덜미를 잡힐 수 밖에 없다." 231P
"회사가 침체에 빠지는 것은 직원이 무능력해서가 아니라, 직원들의 의욕을 상실하게 하는 비효율적인 업무와 상호 소통 없는 나태함 때문이다. 그 원인을 제거하면 곧바로 회복 될 수 있다. 왜냐하면 본래 대다수의 직원들은 의욕을 가지고 회사에 입사했고, 일을 하려고 직업을 선택했기 때문이다." 267P
"사원의 의욕을 불러 일으키고 사기를 진작시키는 방안을 강구하는 일은 사장이 해야 하는 일 중에서 가장 중요한 것이라 할 수 있다."
"사람들이 일할 의욕을 상실했다면 그 배경에는 분명히 '불만'이 있다. 나는 그 불만을 하나하나 없애 가는 것이 사장의 일이라고 생각한다. 이것이야 말로 의욕을 키우는 토양을 만드는 일이다."
"인간은 물건이 아니야. 회사는 사원을 위해 있는거야."


윈도우에서 드라이버를 로드하려면 일단 CreateService 함수로 서비스를 생성해야 합니다. 드라이버를 잘 사용하고 난 뒤 드라이버를 언로드하고 드라이버의 서비스를 삭제할 때 DeleteService 함수를 사용합니다.
이때 응용프로그램과 통신을 위해 생성한 디바이스 오브젝트 등을 CreateFile 등의 함수로 열었을 때 꼭 핸들을 닫아줘야 합니다.
핸들을 닫지 않은채로 DeleteService 함수로 드라이버 서비스를 삭제하게 되면 완전히 삭제되지 않고 흔적이 남아있게 됩니다.
즉 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<드라이버 이름> 키 아래에 DeleteFlag라는 DWORD 값이 생기게 됩니다. 데이터는 1이 들어가있습니다.
서비스가 완전히 삭제되지 않고 삭제 대기중인 상태에서 다시 OpenService로 해당 서비스의 핸들을 얻고 DeleteService 함수를 호출하게 되면 ERROR_SERVICE_MARKED_FOR_DELETE(0x00000430, 1072, 지정된 서비스가 지워진 것으로 표시되었습니다.) 에러가 발생하게 됩니다.
DeleteFlag가 설정된 서비스는 일정 시간이 지나면 자동적으로 삭제됩니다. 하지만 디바이스의 핸들을 닫지 않은 상태에서 CreateService(OpenService)와 DeleteService를 연속적으로 호출하게 되면, DeleteFlag가 남아있는 채로 서비스를 삭제하려고 하는 상황이 생길 수 있으니 주의해야 합니다.
댓글을 달아 주세요
관리자만 볼 수 있는 댓글입니다.
메일 보냈습니다.
관리자만 볼 수 있는 댓글입니다.
네. 연락드리겠습니다.