Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
새로운 dead lock이 발견되서 그제 고쳤다.
혹 아시는 분들도 있겠지만, VS는 총 약 800개의 component 들로 이루어져 있다. 내가 속해 있는 language service 팀만 해도 VS 프로젝트 팀 VS 코어 C# 컴파일러 소스 콘트롤, 클라스 다이아 그램, 유닛 테스트 등등 아 곧 발표돌 team 서버도 잊으면 안되겠다 하여간 여러 많은 다른 콤퍼넌트들과 상호 작용을 한다.
뭐. 버그 나름이겠지만, 우리 팀 콤퍼넌트 자체의 버그는 그래도 고치기 쉽다. 그런데 이게 다른 팀과의 상호 작용 때문일 경우 이팀과 저팀의 소스를 넘나 들며 원인 파악 하는게 ..... 뭐 재미있다고 해놓자.
하여간, 이번 dead lock 역시 컴파일러 팀과 우리팀 그리고 프로젝트 팀 3개의 컴퍼넌트가 상호 작용 할때 서로 다른 assumption을 하기 때문에 발생하는 버그 였다.
간단하게 버그를 설명하면, 엄청 느린 컴퓨터나 아니면 엄청 큰 프로젝트를 VS에서 바로 오픈하고 백그라운드에서 VS가 소스들을 parse 하고 있는 동안 새 C# 파일을 열고 #pragma를 이용해서 project의 configuration을 바꾸면, 어쩌다 dead lock이 걸릴수도 있다.
픽스는 뭐 간단하게 컴파일러 팀과 프로젝트 팀간의 콜을 인터셉트해서 dead lock이 안걸리도록 coordinate 하는 건데...
하여간, 역시 프로그램이 점점 더 방대해 지면서 간 컴퍼넌트간의 interaction과 integration이 얼마나 힘든건지 또 한번 느끼게 해주는 버그였다
흠냐 수고!!