출처 : 데브피아

http://www.devpia.com/Forum/BoardView.aspx?no=563082&ref=563082&forumname=VC_QA&stype=&KeyW=%be%b2%b7%b9%b5%e5%bf%cd+%b5%f0%b9%f6%b0%c5%b0%a1+%b0%fc%b7%c3%b5%c8+OS+%c0%fc%c3%bc%b0%a1+%b8%d8%c3%df%b4%c2+%c7%f6%bb%f3&KeyR=titlecontent


>> 쓰레드와 디버거가 관련된 OS 전체가 멈추는 현상


아주 이상한 현상에 시달리는 중입니다.

이번뿐만 아니고 아주 오래전부터 이 현상을 겪고 있는데요

 

쓰레드를 사용하는 프로그램을 디버깅 하다보면

VC++ 를 포함해서 모든 응용 프로그램, 하다못해 OS자체까지

멈추는 현상이 발생합니다.

 

그러니까, DEBUG 모드로 컴파일 한 후에

여기저기 브레이크 포인트 잡고 F5 누르면

좀 실행되다가 OS가 멈춰버립니다.

꼭 이 상황에서만 멈춥니다. 딴 상황도 아니고..

릴리즈로 컴파일 해서 돌린다던지,

디버그로 컴파일해서 F5 안하고 그냥 실행하면 또 전혀 문제가 안나타납니다.

 

아주 멈추는 것이 아니고, 거의 수백배 가량 늦게 작동합니다.

작업관리자 열어서 프로세스 죽이는것도 잘 안돼고 (죽이는 명령 내리는데 까지 10분은 걸려요)

 

문제는 이 현상이 항상 나타는게 아니고 '종종' 나타납니다.

 

제가 만드는 프로그램이 항상

쓰레드가 2~3개가 동시에 돌아갑니다.

각 쓰레드는 idle 이 거의 없이 팽팽하게 돌아가죠.

그렇다고 쓰레드 우선순위를 조정하거나 한 적은 없습니다.

데드락은 더욱더 없구요.

 

제가 만들고 있는 프로그램이 특이한 경우라고 볼수 없습니다.

왜냐하면 완전히 다른 스타일의 프로그램을 만들때도(물론 쓰레드 사용)

같은 현상을 겪고 있거든요.

제가 만든 프로그램에 원인이 없다고 정말 "확신" 합니다.

저도 쓰레드쪽 프로그래밍은 할만큼 한사람이거든요..

 

윈도우XP프로, VC++2005 를 사용 중입니다만,

VC++2003 에서도 마찬가지였습니다.

그리고 이 컴퓨터에서만 이러는게 아니고

완전히 다른 기종의 컴퓨터에서도 마찬가집니다.

OS도 다시 밀어보고 했는데도 마찬가지구요

 

VC++2003 의 버그라고 결론을 내렸었는데, 얼마전부터 사용하시 시작한

VC++2005 에서도 같은 문제가 생기니 미쳐 버리겠네요.

 

제발 이 문제를 해결법을 알려주시는분은 제가 진짜

만나서 사례라도 하고싶군요



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

그거 IME 쪽 버그입니다. 오피스 설치하면 더 그런데, ctfmon이 IME랑 엮이면서 문제를

일으키는 걸로 알고 있습니다.(MS KB 문서가 나온 적이 있습니다.)

 

여튼간에 해결방법은 제어판에 가셔서 국가 및 언어 옵션을 여세요

그리고 언어탭 쪽 설정에서 텍스트 서비스 및 입력 언어라고 있습니다.

여기서 고급 텍스트 서비스라는 언급이 있을텐데 이걸 사용안한다고 설정하세요.

 

그리면 될 겁니다. 부팅은 꼭 안해도 되는데, 기존에 뜬 놈들은

한글 입력이 안될 겁니다. 프로그램 죽였다 다시 띄워도 될텐데..귀찮으니

부팅해주는 것도 좋을 듯 하군요.

 

뭐 저는 이런 식으로 해결해서 잘 쓰고 있습니다.

한번 사용해보세요.



안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스

댓글을 달아 주세요