Notice»

Recent Post»

Recent Comment»

Recent Trackback»

Archive»

« 2025/11 »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

 
 
설명
http://bit1010.tistory.com/47

아래코드를 초기화용으로 한번 호출하자.
MFC라이브러리 버그란다. 2008에서도 해결안됐더라..
  void SocketThreadInit()
   {
   #ifndef _AFXDLL
   #define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE
   #define _afxSockThreadState AfxGetModuleThreadState()

      _AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
      if (pState->m_pmapSocketHandle == NULL)
         pState->m_pmapSocketHandle = new CMapPtrToPtr;
      if (pState->m_pmapDeadSockets == NULL)
         pState->m_pmapDeadSockets = new CMapPtrToPtr;
      if (pState->m_plistSocketNotifications == NULL)
         pState->m_plistSocketNotifications = new CPtrList;

   #endif
   }
:

MFC Static라이브러리 소켓사용시 버그!

2008에서도 마찬가지로 해결안됨.


문제

USN사업에서!!

웹뷰어를 2008로 만들었는데..

MFC 배포 문제때문에 MFC라이브러리를 포함(Static)해버렸다.

 

그러고선 테스트했을때는 문제 없더니.

8개 거점의 페이지를 팝업으로 띄우는 홈페이지에서..

한번 띄우고 나면 그다음 페이지에선 접속타이밍쯤 죽는 문제가 계속 발생했다.

특히 ie7에서..

 

찾아보니.. 소켓의 Connect함수에서 죽더라..

도로공사 전송프로그램에서도 그런 일이 있었는데..

소켓이 재접속할때마다 delete하고 new하면 죽는경우가 발생하더라..

그래서 그부분도 new는 한번만하고 Close,Init,Connect로 처리를 했었는데..

 

웹뷰어도 그렇게 처리해고 별짓을 다해봤으나 결과는 똑같았다.

그래서 위의 에러를 이용해서 열심히 웹서핑을 했다!

http://support.microsoft.com/kb/q193101/

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=320317&ref=320055

 

의외로 많은 질문을 봤고.. 결국 MFC Static라이브러리의 버그라는걸 알았다.

6.0에 있던 고질적인 버그가 2008까지 오다니.. 최악이다..

Thread에서 재접속(?)시 일어나는 버그라는데.. ActiveX이고 같은 페이지여서 문제였던가?

아무튼 저 소스를 OnCreate에서 함수로 만들어서 호출했더니 문제가 싹 사라졌다.. ㅡ.ㅡ;;

정석이 뭔진 모르겠다..

   void SocketThreadInit()
   {
   #ifndef _AFXDLL
   #define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE
   #define _afxSockThreadState AfxGetModuleThreadState()

      _AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
      if (pState->m_pmapSocketHandle == NULL)
         pState->m_pmapSocketHandle = new CMapPtrToPtr;
      if (pState->m_pmapDeadSockets == NULL)
         pState->m_pmapDeadSockets = new CMapPtrToPtr;
      if (pState->m_plistSocketNotifications == NULL)
         pState->m_plistSocketNotifications = new CPtrList;

   #endif
   }
:
dx2300 PC를 새로 깔고선 데이터를 백업좀 하려고 했더니

USB가 인식을 못한다!!

보드 교체로 해결

 

문제

home,Pro를 씨디도 바꿔보고 설정도 바꿔보고 sp3로도 세팅해보고

sp2에서도 해보고;;; 별짓 다해도 안되서 HP서비스 센터에 전화했다.

 

1. 처음 받은 여자 엔지니어가 바이오초기화를 해보라 해서 점퍼세팅으로 초기화를 해보고 새로 깔았다.

똑같다.

 

2. 허영기 엔지니어와 3번 통화했다.

USB드라이버 관련해서 삭제도 해보고

전원이 딸릴경우도 있다하여 전원플러그를 빼고 몇차례 전원버튼을 눌러 남은 전원을 소모시키고 재부팅도 해보고..

원래 복구용 CD를 두번이나 받아서 재설치도 해봤다.

여전히 되지 않는다. A/S를 요청했다.

 

3. A/S방문!

와서 보더니 보드를 교체한다. 똑같은 보드지만 중고다 ㅡ.ㅡ; 기분 찝찝했지만.

보드를 교체하고 나니 멀쩡하다. 윽;;

보드쪽에서 usb로 전원이 제대로 안보내지는 듯 싶단다.

 

A/S기간은 1년이지만 보드문제이므로

보드는 기본 3년기간이란다. 무상으로 완료.

거진 1달(?)을 고생했다... 으 ㅡ.ㅡ;;

윈도우 재설치한것만 20번이 넘은거 같다;;

 


: