델파이 코리아(www.delphikorea.com)의 조용호님의 글을 가져 왔습니다.
------------------------------------------------------------------
지난 2월에 델파이6 업데이트 2가 나온 후로 4개월만에 다시 작은 업데이트가 나왔습니다. (리눅스/카일릭스 채널 시삽이신 이갑연님이 알려주셨습니다. 감사...) 이번 패치는 주로 웹애플리케이션(WebBroker, WebSnap)에서 데드락이 발생하는 문제를 해결한 것입니다. 이 RTL 업데이트는 델파이6 등록 사용자용 페이지에서 다운로드받을 수 있습니다.
주의 : 이번 RTL 업데이트를 하기 전에 이전에 발표된 업데이트 2를 먼저 패치해야 합니다. 또한 이 업데이트에는 언인스톨 기능이 없습니다. 언인스톨의 가능성이 있다면 미리 해당 파일들을 백업해놓든지, 혹은 설치 CD로부터 해당 파일들을 복사해야 합니다.
이 업데이트는 델파이6의 파일들 중 다음의 파일들을 덮어쓰게 됩니다. (엔터프라이즈 기준)
libSysUtils.dcu
libXmlxform.dcu
libdebugSysUtils.dcu
libdebugXmlxform.dcu
MergeModulesBaseRTL.Msm
sourceRtlSysSysUtils.pas
WindowsSystem32rtl60.bpl
WindowsSystem32rtl60.map
이번 업데이트는 델파이6에서 데드락이 발생하는 문제를 해결합니다. 일반적으로 이 데드락 문제는 웹애플리케이션에서 발생하는데, 과도한 로드가 걸려서 많은 웹모듈이 생성되었을 때 발생하게 됩니다. 일단 이 문제가 발생하게 되면 해당 웹애플리케이션은 더이상 요청에 응답하지 않고 CPU 점유율이 100%까지 올라가게 됩니다. 이번 업데이트에서는 이런 문제를 해결했습니다.
문제의 파일인 SysUtils 모듈을 업데이트 전과 비교해본 결과, TMultiReadExclusiveWriteSynchronizer 클래스만이 변경이 있었습니다. 이 클래스는 멀티쓰레드 애플리케이션에서 락킹을 통해 메모리를 보호해주는 역할을 하는데, 상당히 많은 변경이 있더군요. 그런데 이 클래스는 웹애플리케이션 관련 모듈들 뿐 아니라 CORBA 관련 모듈들에서도 대단히 많이 참조되고 있습니다. 따라서 코바를 사용하는 애플리케이션에서도 필수적으로 업데이트가 필요할 것 같습니다.
참고로 이 패치는 C++Builder에서는 사용할 수 없으나, SysUtils.pas 모듈은 델파이와 C++빌더가 동일합니다. 그러므로 델파이에 설치한 후 SysUtils.pas 파일을 컴파일하고 dcu, hpp 파일들을 만들어서 이전 파일들을 덮어씌우는 식으로 패치가 가능은 합니다. 실제로 그렇게 테스트중인데.. 볼랜드에서 보장한 방법은 아니므로 위험이 따를 겁니다. 하지만 현재 해당 버그로 심각한 문제를 겪고 있는 중이라면 이 방법이라도 써야 하겠지요. 조금 기다리면 C++Builder용 패치도 나오리라 생각합니다.
델파이5나 C++Builder5의 sysutils 파일을 살펴봤더니 역시 동일한 문제가 있더군요. 볼랜드가 5 버전에 대해서는 기술지원을 하지 않겠다는 심산인가 봅니다. 해당 버그가 심각한 분들 중 5버전을 사용하시는 분들은 6 버전으로 업그레이드를 하시는 수밖에 없을 것 같습니다.
그럼...
[ 볼랜드 포럼 ] 공지사항에 서 퍼왔습니다..