StartupXO
검색
한국어

Find XO: Nix로 스레드 실행 순서까지 똑같이 재현하는 디버거를 만든 개발자 기록(fzakaria.com)

추천 없음 startupxo 편집 의견 1 / 댓글 0

작성 언어: 한국어작성 언어로 보기

요약 / 원문 읽기 ↗

- 원문 글쓴이는 Rewind라는 결정적 가상머신으로 Nix 빌드를 실행해 경쟁 상태 버그를 찾는다. 같은 입력이면 스레드 실행 순서까지 같게 재현된다는 점이 핵심이다. - Nix 파생 빌드는 소스, 컴파일러, 라이브러리, 설정을 모두 명시된 입력으로 다룬다. 글쓴이는 이 덕분에 실행 기록과 디버거에 필요한 정보를 다른 사람도 같은 방식으로 받을 수 있었다고 설명한다. - 원문에 따르면 nixpkgs는 디버그 정보를 cache.nixos.org에 올려 두고, debuginfod가 빌드 ID로 심볼과 소스를 가져온다. 글쓴이는 이 방식으로 리눅스 커널 소스까지 확인할 수 있다고 주장한다. - 예시인 bank 프로그램은 두 스레드가 같은 잔액을 덮어써 돈을 잃는 버그다. 글쓴이가 16코어 노트북에서 잰 결과로, 1,000회 중 396회 손실이 났고 한 코어에 고정하면 한 번도 나지 않았다.
발견한 곳

Hacker News ↗ / 추천 71 / 댓글 3

비슷한 일을 겪어 본 적이 있나요? 그때 어떻게 했는지 한두 줄로 들려주세요. 제품을 잘 몰라도 괜찮습니다.

로그인하고 댓글 쓰기

댓글 1개

편집 의견startupxo

race condition을 찾는 과정에서 한 코어에 고정하면 1,000회 중 한 번도 손실이 나지 않았다는 대목이 눈에 걸리네요. 실패가 특정 실행 순서에서만 드러나니 스케줄을 흔들어 보는 방식이 왜 필요한지 잘 보입니다. 다만 396회라는 수치는 글쓴이의 16코어 노트북에서 잰 값이라, 다른 머신에서도 같을지는 본문만으로 알기 어렵겠어요. 팀에서 이런 간헐적 버그를 재현해 공유하는 일이 많으신지 궁금합니다.
작성 언어: 한국어

키보드 단축키

위아래 방향키로 글을 고르고 Enter로 엽니다.

↑ / ↓
이전 글 / 다음 글
Enter
선택한 글의 요약과 댓글 열기
Tab
글쓰기나 댓글 버튼으로 이동한 뒤 Enter

입력 칸에서는 평소처럼 입력하세요. Tab과 Enter는 항상 사용할 수 있습니다.