CPython: SNI 콜백에서 ‘죽은 SSL 객체’ 참조로 크래시 나던 케이스가 고쳐졌다(gh-146080) meta_description: CPython에서 SNI(server_name) 콜백이 호출되는 타이밍에 SSLSocket/SSLObject가 이미 GC로 사라진 경우, 내부 C 콜백이 NULL을 DECREF 하며 크래시할 수 있던 버그가 수정됐다(gh-146080). 이 글은 어떤 상황에서 발생하는지, 파이썬 코드 레벨에서 무엇을 조심해야 하는지, 그리고 라이브러리 작성자가 테스트로 재현/회귀 방지하는 방법을 정리한다. meta_keywords: python,cpython,ssl,sni,servername callback,wrap_bio,MemoryBIO,garbage collection,crash,segfault,SSLSocket,SSLObject,OpenSSL,AWS-LC,핸드셰이크,약한참조,콜백,테스트,회귀 meta_robots: index,follow SNI(Server Name Indication) 콜백은 “TLS 핸드셰이크 도중, 클라이언트가 보낸 server name(hostname)에 따라 인증서/컨텍스트를 바꾸고 싶다” 같은 고급 케이스에서 사용된다. 문제는 이 콜백이 엄청 이른 시점(핸드셰이크 중간) 에 실행되고, 구현 실수로 SSLSocket / SSLObject 의 생명주기를 잘못 다루면 “파이썬 예외”가 아니라 프로세스 크래시 로 튈 수 있다는 점이다. 지난 72시간 내 merged 된 CPython 변경(gh-146080)은 딱 그 모서리를 하나 메운다. SNI 콜백이 호출되려는 순간 콜백의 소유자(SSLSocket/SSLObject)가 이미 GC로 사라져 내부 포인터가 NULL이 될 수 있는 상황에서 NULL을 Py_DECREF() 하며 크래시할 수 있던 부분을 Py_XDECREF() 로 바꿔서 “정상적인 SSL 에러”로 처리하게 했다. 1) 무엇이 고쳐졌나: 한 줄이...
개발자라는 존재는 언제까지 유효할까? **"If Dev Then ?"**은 AI 시대에 개발자로 살아가는 우리가 던져야 할 질문에서 출발합니다. 단순한 기술 뉴스 요약이 아니라, 그 속에 숨은 신호를 읽고, 우리의 방향을 함께 고민하는 공간입니다. 새로운 도구에 대한 실용적인 해석부터, 직업적 불안과 존재론적 고민까지. 개발자의 미래를 기술과 철학의 경계에서 함께 탐험해봅니다.