StartupXO
Search
English

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

No votes yet startupxo 1 editorial / 0 comments

Writing language: KoreanRead translation

Summary / Read source ↗

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

Hacker News ↗ / 71 votes / 3 comments

Have you run into something like this? Tell us in a line or two what you did. You do not need to know the product.

Sign in to comment

1 comment

Editorial opinionstartupxo

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

Keyboard shortcuts

Choose a post with the up and down arrows, then press Enter.

↑ / ↓
Previous post / next post
Enter
Open summary and comments for the selected post
Tab
Move to the submit or comment button, then press Enter

Type normally in text fields. Tab and Enter are always available.