diff options
| author | eunhhu <[email protected]> | 2026-10-04 11:11:00 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-10-04 11:11:00 +0100 |
| commit | 91bb0dc2f471f7fb90d7d5bc08c87805dceac326 (patch) | |
| tree | 242e8c1ef864c87413c9468d46ba8413cd165277 /docs/research | |
| parent | 52e51e4231f2e119c97826ae6d6e2f2af0da0c58 (diff) | |
| download | pure-91bb0dc2f471f7fb90d7d5bc08c87805dceac326.tar.gz pure-91bb0dc2f471f7fb90d7d5bc08c87805dceac326.zip | |
Say that reading the code found stage 3's two races, and how a host changes apps
The use after free in local_done and the owner's lock made after another
app's outlet used it were found reading the code, not by the check,
which passed with both before it was made to change senders (115, 017).
The usage now says changed lines change in place unless their store
moved; and 115 names the path no check takes: a module refused while
changing in place.
Diffstat (limited to 'docs/research')
| -rw-r--r-- | docs/research/115-apps-that-change.md | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/docs/research/115-apps-that-change.md b/docs/research/115-apps-that-change.md index a76f9dd..5a5ec1d 100644 --- a/docs/research/115-apps-that-change.md +++ b/docs/research/115-apps-that-change.md @@ -98,8 +98,11 @@ B는 5xx를 하나도 받지 않았다. 바꾸는 일은 파일을 읽는 스레 다시 시작하고, 저장소를 만들 수 없던 앱은 고친 뒤의 SIGHUP에 시작하고, 틀린 줄이 있는 파일은 아무것도 바꾸지 않고, `kill -9` 뒤에는 파일 그대로 시작한다. 혼자 10번, CPU 부하 아래 5번, ASan으로 빌드한 `pure-serve`로 6번 지났다. -이 검사가 처음 구현에서 찾은 것: 보내는 앱이 멈추는 동안 받는 앱의 차례가 그 출구를 놓은 뒤에 읽는 자리(`local_done`), 앱이 -시작하기 전에 다른 앱의 출구가 그 소유자의 락을 쓰는 것(락을 자리와 함께 만든다). +처음 구현의 동시성 결함 둘은 이 검사가 아니라 코드를 읽어 찾았다. 보내는 앱이 멈추는 동안 받는 앱의 차례가 놓인 출구를 읽던 +자리(`local_done`)와, 앱이 시작하기 전에 다른 앱의 출구가 그 소유자의 락을 쓰던 것(락을 자리와 함께 만든다)이다. 그때의 검사는 +보내는 앱을 바꾸지 않아 둘이 있는 채로 세 번 지났다. 고친 뒤 검사를 넓혀(보내는 앱을 바꾸기, 바꾸는 동안 보기를 읽기) 그 길을 +지나게 했고, 위의 10번, 5번, 6번은 고친 코드에서 지난 것이다. 그 자리에서 바꾸는데 새 모듈을 거절하거나 읽지 못하는 길(앱이 +까닭을 남기고 멈춘다)은 검사하지 않았다. ## 판정 |
