피드로 돌아가기
Node.js 0.10.5 (Stable)
Node.js BlogNode.js Blog
Backend

Node.js 0.10.5에서 7개 모듈의 버그 수정 및 libuv 업그레이드로 소켓 소실, 레이스 컨디션, NULL 포인터 역참조, 버퍼 오버플로우 제거

Node.js 0.10.5 (Stable)

2013년 4월 23일3beginner

Context

Node.js 0.10.x 버전에서 HTTP 소켓 관리, 암호화 처리, 데이터그램 바인딩, 스트림 unshift 동작 등에서 안정성 문제가 존재했다.

Technical Solution

  • HTTP 모듈: 존재하지 않는 소켓 제거 시도 방지 (isaacs)
  • Crypto 모듈: LazyTransform을 메서드에서 프로퍼티로 변경 (isaacs)
  • Assert 모듈: 에러 정보를 err.name 대신 err.message에 저장 (Ryan Doenges)
  • dgram 모듈: 주소 없이 bind() 호출 시 발생하는 오류 수정 (Ben Noordhuis)
  • handle_wrap 모듈: NULL 포인터 역참조 오류 제거 (Ben Noordhuis)
  • os 모듈: os.type()의 버퍼 오버플로우 취약점 수정 (Ben Noordhuis)
  • stream 모듈: unshift() 함수의 레이스 컨디션 제거 (isaacs)
  • libuv를 0.10.5로 업그레이드
  • Windows 빌드: Visual Studio 2012 지원 추가

Key Takeaway

런타임의 안정성은 핵심 모듈의 세부 구현(소켓 생명주기, 메모리 안전, 동시성 제어)에서 비롯되며, 각 모듈의 엣지 케이스(소켓 소실, NULL 포인터, 레이스 컨디션)를 체계적으로 테스트하고 수정하는 과정이 필수적이다.


Node.js 기반 프로덕션 서비스를 운영하는 팀에서

0.

1

0.5 이상 버전으로 업그레이드하면 HTTP 연결 오류, 스트림 처리 불안정성, 메모리 안전 문제로 인한 프로세스 크래시를 방지할 수 있다.

원문 읽기