주요 콘텐츠로 건너뛰기

나는 최근에 OpenVOS 고객을위한 명백한 컴파일러 문제를 진단했다. 그는 OpenVOS 릴리스 17.1을 실행하는 두 개의 모듈을 가지고 있습니다. 그는 그들 중 하나에 성공적으로 프로그램을 컴파일 할 수 있었다, 하지만 gcc 컴파일러는 그가 다른 모듈에 컴파일하려고 할 때 "내부 컴파일러 오류"를 진단. 여기서 문제를 복제하려고 했지만 문제를 재현할 수 없었습니다. 그래서 컴파일러의 문제가 아니라 오류를 나타내는 모듈에 문제가 있음을 나에게 발생했습니다. 처음에는 OpenVOS 릴리스 17.1에서 만든 기본 명령 제한 값이 변경된 때문일 수 있다고 생각했습니다.  명령 제한 값이 일관된 값으로 설정되지 않거나 무한값으로 설정되지 않은 경우 gcc 및 gmake를 포함한 여러 프로그램이 릴리스 17.1에서 실패합니다. 그러나 이 고객은 module_start_up.cm에서 샘플 set_default_cmd_limits 명령을 주석으로 내보냈기 때문에 이미 무한값을 사용하고 있었기 때문에 이 릴리스에서 권장하는 값입니다. 다음으로 컴파일러 오류 시 고객에게 syserr_log 살펴보도록 요청했습니다. 물론, 그는 자신의 모듈이 페이징 공간이 부족했다는 메시지를 발견했습니다. 주소 공간 제한이 사용을 제한하지는 않았지만 페이징 공간이 충분하지 않았기 때문에 운영 체제는 추가 가상 메모리를 요청하는 것을 막을 수밖에 없었습니다. 이로 인해 gcc에서 주소 지정 예외가 발생하여 모호한 오류 메시지가 발생했습니다. 이 디스크 중 하나에 새로운 페이징 파일을 만든 후, 그는 자신의 거대한 소스 프로그램을 구축 할 수 있었다.

이야기의 도덕은 당신이 이상한 오류를 얻을 때 (당신이 전에 본 적이 하나, 또는 당신이 이해하지 못하는 하나), OpenVOS가 메시지를 기록했는지 확인하기 위해 syserr 로그를 보는 것은 결코 아프다. 이 경우, 그의 syserr 로그는 페이징 공간의 고갈을 향한 진행 상황을 추적하는 일련의 메시지가 포함되어 있습니다. 오류가 재현 가능했기 때문에 연결은 매우 분명했습니다.

syserr_log 메시지에 대한 질문이 있는 경우 OpenVOS 포럼에 메시지를 게시하거나 해당 지역의 고객 지원 센터에 문의할 수 있습니다.

 

© 2024 스트라투스 테크놀로지스.