NVIDIA nview 서비스에서 shared heap exhausted or damaged 에러가 날 때

IT/Software
2010. 1. 28. 09:31, Posted by ScottRhee
엔비디아의 그래픽카드를 사용하고 있는 경우, 이벤트 로그에 다음과 같은 에러가 쭉 쌓여있을 때가 있습니다.


항목을 살펴보면 다음과 같은 에러가 나타나는데요. 뭔소린가 싶어서 해결을 하고 싶어도 에러 정보도 충분치 않고 참 답답하더라고요. 


저는 지금 Chrome 브라우저를 사용하고 있어서 저렇게 나오지만, 익스플로러를 사용하는 경우에도 비슷하게 익스플로러 이름이 들어간채로 에러가 발생합니다. 

일단 이게 무슨 뜻이냐. 프로그래밍을 하시는 분이면 아시겠지만 heap라는건 임시적으로 사용하는 메모리영역같은 겁니다. 따라서 저 에러를 문자그대로 해석하면 nview에서 자체적으로 할당해놓은 heap 메모리가 고갈되어 더이상 메모리를 새로 쓸 수가 없다는 얘기같네요. 보통 heap 메모리는 운영체제가 관리하지만, 이놈은 따로 (사제로) 만들어서 쓰나봅니다. 프로그래밍 하다보면 뭐 이런게 썩 드문 일은 아니죠. 근데 문제는, 저렇게만 적어놓으면 저걸 뭐 어쩌라는 건지.... ㅎㅎ 

예전에는 nview 서비스만 하는 프로세스가 따로 있어서 고놈만 똑 끄면 (비록 nview가 제공하는 막강한 기능, 특히 듀얼모니터에 최적화된 기능들은 포기할지라도) 저 에러는 잡을 수가 있었는데, 지금은 서비스가 통합되어 있어 nview만 끌 수 없는 모양입니다.

그럼 저 에러를 계속 보고 살아야 하는가. 그렇지는 않네요... 이곳에 해결책이 나와있습니다. 

지금 당장 이 문제를 해결하고 싶으신 분은 그냥 위 링크 클릭하실 필요 없이 지금부터 제가 소개해드리는 방법대로만 하시면 될 것 같습니다. 

 ※ 레지스트리를 조작하여 생기는 문제는 스스로 책임지셔야 합니다. 익숙하지 않으신 분들은 절대 따라하지 마세요~~!! 
1.) 레지스트리 에디터를 구동합니다. (시작-실행-Regedit)

2.) 아래의 키를 찾아들어갑니다. 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

3.) "Windows"라 되어 있는 값을 엽니다. 열어보면 꽤 긴 문자열인데요, 중간에 다음과 비슷한 내용을 담고 있을 겁니다.  (4096이라는 숫자는 가변입니다. 3072일수도 있고 더 작은 숫자일수도 있어요.) 

....Windows SharedSection=1024,4096,512....

이걸 아래처럼 8192로 바꿔줍니다. 당연히 저 숫자만 바꾸는것이고 다른 부분은 손대시면 안됩니다. 

Windows SharedSection=1024,8192,512


4.) "확인"을 누른다음에 레지스트리 에디터를 종료하고, 시스템을 재시작합니다. 

heap영역으로 잡는 메모리 기본값을 대폭 늘려주는 것으로 생각됩니다. 사실 이런 문제는 금방 패치가 될 줄 알았는데 아직도 그대로여서 찾아보게 되었습니다. 혹시 관련 문제가 있으신 분들께 도움이 되었으면 합니다. 
: