none
BEX 오류 관련 문의 RRS feed

  • 질문

  • VC6.0 기반으로 개발된 MFC 프로그램이며,

    프로그램 내에는 VS2010(C#)으로 개발된 컴포넌트가 일부 구동되고 있습니다.

    그런데 간혹 아래와 같은 오류창이 뜨면서 프로그램이 강제 종료됩니다.

    ==============================================
      문제 이벤트 이름:   BEX
      응용 프로그램 이름:   xxx.exe
      응용 프로그램 버전:   1.0.0.5
      응용 프로그램 타임스탬프:   556d712f
      오류 모듈 이름:   MSVCR80.dll
      오류 모듈 버전:   8.0.50727.4940
      오류 모듈 타임스탬프:   4ca2b271
      예외 오프셋:   0000bde7
      예외 코드:   c0000409
      예외 데이터:   00000000
      OS 버전:   6.1.7601.2.1.0.768.3
      로캘 ID:   1042
      추가 정보 1:   de44
      추가 정보 2:   de44a735122c9a785154c9093621838b
      추가 정보 3:   ca44
      추가 정보 4:   ca44a90545eccf9b15aa12b809b9e781

    ==============================================

    인터넷 검색을 통하여 여러 가지 정보를 얻긴 했으나,

    정확한 원인과 해결방안을 찾을 수가 없습니다.

    상세한 답변 부탁 드립니다.

    감사합니다.

    2015년 6월 3일 수요일 오전 7:32

답변

  • 현재 프로그램이 이전 운영체제(XP, Server 2003 이전 버전...)에서 잘 실행되었는데,  Windows 7 또는 그 이상의 운영체제에 발생하는 문제라면 환경적인 요인일수 있기 때문에 DEP로 해결될수 있는 가능성이 있습니다. 하지만, 호환성의 문제가 아니라면 DEP 를 통해서 해결을 기대하기는 어려울듯합니다.

     

    만약, DEP로 문제가 해결되었다면 서비스팩 또는 기타 환경적인 요인이 해결된것이기 때문에 그것으로 인해 어떤 추가적인 문제가 발생할지를 예상하기 어렵습니다.

    2015년 6월 4일 목요일 오전 6:36
    중재자

모든 응답

  • 409 예외코드는 Stack buffer overflow 에 대한것입니다. 말그대로 스택 메모리를 초과하는 문제가

    발생했다는 것입니다. 재귀호출함수를 심하게 호출하여 이런 오류가 나기도 하지만, 보통의 경우

    스택을 처리하는 방식이 다른 언어나 환경에서 함수를 호출할때 스택프레임을 명시하는 키워드를

    잘못적으면 이런 오류가 나기도 합니다.  

    예를들어, 함수의 포인터를 보통은 아래와 같이 사용하는데

     

    int (*p_my_func)(int data);

     

    해당 함수의 포인터로 사용할 함수가 스택 프레임을 stdcall 방식을 사용한다면 저렇게 사용했을때

    409 예외가 발생할수 있습니다. 따라서 이런경우, 함수의 포인터에 스택프레임을 정확하게

    명시해서 사용하는게 좋습니다.

      

    int (__stdcall *p_my_func)(int data);

       

    라고 수정해서 사용하시면 됩니다. 만약, 현재의 오류가 스택프레임 실수로 일어나는 오류가 아니라면

    해당 C# 모듈이 사용하는 컴포넌트 자체의 결함때문에 발생할수도 있으니, C#이 사용하는 환경이나

    컴포넌트들에게서 이런 문제가 있는지 확인하시고 업데이트를 하셔야 합니다.


    2015년 6월 3일 수요일 오전 9:49
    중재자
  • 상세한 답변 감사드립니다.

    그런데 전체 소스를 파악하여 원인을 수정하기에는 아마도 적지않은 시간이 소요될 듯 하여,

    임시방편으로 데이터 실행 방지(DEP)에 실행 파일을 추가하는 방법으로 처리하려고 하는데요,,

    이 방법으로 처리하면 위와 같은 오류를 일시적으로 막을 수는 있는지 궁금합니다.

    그리고 이 방법이 맞다면,, DEP로 처리했을때 혹시 다른 문제가 생길만한 소지가 있는지도 궁금합니다.

    감사합니다.


    • 편집됨 sebastian__ 2015년 6월 4일 목요일 오전 12:37
    2015년 6월 4일 목요일 오전 12:31
  • 현재 프로그램이 이전 운영체제(XP, Server 2003 이전 버전...)에서 잘 실행되었는데,  Windows 7 또는 그 이상의 운영체제에 발생하는 문제라면 환경적인 요인일수 있기 때문에 DEP로 해결될수 있는 가능성이 있습니다. 하지만, 호환성의 문제가 아니라면 DEP 를 통해서 해결을 기대하기는 어려울듯합니다.

     

    만약, DEP로 문제가 해결되었다면 서비스팩 또는 기타 환경적인 요인이 해결된것이기 때문에 그것으로 인해 어떤 추가적인 문제가 발생할지를 예상하기 어렵습니다.

    2015년 6월 4일 목요일 오전 6:36
    중재자
  • OS 버전은 모두 윈도우7 이상을 사용하고 있으며,

    특정 PC에서 위와 같은 오류가 자주 발생되기에 개인적으로 추측해본 내용입니다.

    암튼 상세하고 친절한 답변 감사드립니다.

    메르스 조심하시고 좋은 하루 보내시기 바랍니다. :)

    2015년 6월 4일 목요일 오전 7:00
  • 잘 해결되시기를 바라겠습니다~^^

    궁금한점 있으시면 또 질문해주세요~

    2015년 6월 4일 목요일 오전 7:18
    중재자