shmdt(2) のソースコードリーディングを hiboma/hiboma に push した
モチベーション
shmdt(2) したアドレスで segmentation fault を起こす問題をリサーチしていた。man を呼んでも不明瞭な箇所があり、どんな実装か気になったので読んでいた
- プロセスから見ると、shmdt(2) 済みのセグメントは munmap(2) したのと同等にみえてる感じになる
- 該当アドレスの vm_area_struct が消されている
- vm_area_struct の無いアドレスを 読み/書き/実行 しようとしたら segmentaion fault するよね
というあたりが解消された
感想文
読んだ感想としては
- SysV 共有メモリセグメントの実装は、mm/mmap.c の実装を拝借しているのだな
- 呼び出し階層が浅くて、他のシステムコールに比べて素朴に見える
struct vm_area_struct
の扱い方のお勉強によさそう- ( 深追いして do_munmap を読んでいくとちょっと大変 )
といったところ
hiboma リポジトリとは?
ソースコード(主に Linux カーネル) や技術書を読んだ際の軌跡や、デバッグやトラブルシューティングの履歴などを残しているリポジトリです。