Microsoft MVP성태의 닷넷 이야기
.NET Framework: 20. System.AccessViolationException 예외가 발생한 한 예. [링크 복사], [링크+제목 복사],
조회: 26334
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

좀 더 정확히는, 아래와 같은 오류가 발생했습니다.

System.AccessViolationException: attempted to read or write protected memory. This is often an indication that other memory has been corrupted.
 at Microsoft.Office.Interop.InfoPath.SemiTrust._Application2.get_Name()
 at InfoMHost.MyHost.LoadTarget( Object pApp, Object pDoc, String infoXMLText ) in ...... line XX

PIA 어셈블리를 통해서 실제 COM 개체의 메서드/프로퍼티를 호출하는 데 위와 같은 오류가 발생한 것입니다.

직접적인 원인은, PIA 어셈블리에서 구현된 타입의 Method 순서와 실제 COM 개체의 IDL 파일에 정의된 순 가상 함수의 순서가 일치하지 않아서 발생한 것이였습니다.

"Attempted to read or write protected memory" 라고 하는 것은, 즉 PIA 를 통해서 vtable 의 3번째에 있는 함수를 호출했으나, 실제 COM 개체에서는 ( 예를 들어 ) 5번째에 있는 함수 호출을 발생시키다 보니 입력인자/반환인자가 일치하지 않아서 잘못된 메모리 접근을 하게 되어서 그런 듯 싶습니다.

즉, 위와 같은 경우에서만 발생하는 것이 아니고 그 외의 모든 "잘못된 메모리 접근" 에 대해서 발생할 수 있는 문제이므로 버그를 잡는 것이 상당히 어려운 경우라고 할 수 있겠습니다.

이번에는 그나마 좀 쉽게 해결했지만 ^^; 개인적으로 다시는 보고 싶지 않은 예외입니다.








[최초 등록일: ]
[최종 수정일: 1/19/2005]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 196  [197] 
NoWriterDateCnt.TitleFile(s)
16정성태7/17/200319622COM 개체 관련: 3. IE 툴밴드의 위치문제파일 다운로드1
15정성태7/17/200320599VC++: 5. 시행착오 - 클래스 포인터를 void * 로 대입후 delete 하는 경우.
14정성태7/17/200322181VC++: 4. MFC Message 처리 구조
13정성태7/17/200321926VC++: 3. template 활용의 최고 단계!
12정성태5/7/200619521VC++: 2. void func1( MYCLASS *&pBuildingElement ); 선언의 의미
10정성태7/17/200317854기타: 2. 데브피아 사이트의 클럽 서비스 내에 있는 Standard C++ Research
9정성태7/17/200323426기타: 1. Programming Applications for Microsoft Windows 4th Edition
8정성태7/17/200320810COM 개체 관련: 2. CWindowImpl 의 기본 윈도우 클래스 명을 바꾸려면?
7정성태7/17/200323404VS.NET IDE: 1. VC++ 프로파일링 사용법
4정성태7/17/200335760VC++: 1. C++ 클래스 멤버변수 초기화 [3]
3정성태7/17/200321738스크립트: 2. JScript에서의 Blocking 동작을 막아주는 COM 메서드
2정성태6/14/200640636COM 개체 관련: 1. IWebBrowser2와 IHTMLDocument2의 상호 변환 [2]
1정성태7/17/200324783스크립트: 1. IE 의 훌륭한 저장기능 - userData
... 196  [197]