目次: Linux
以前、LinuxのI/O統計情報が読めないプロセス(systemd --user)がある話をしました。/proc/[pid]/ioファイルのreadアクセス権があっても、ptrace_may_access()の判定で拒否されるためにread()時にEPERMエラーになります。読めるかどうかの判別がopen()時にできず、試し読みでread()するしかない面倒な作りです。
今回はさらに判別が面倒な例/proc/[pid]/wchanについてのメモです。wchanはCONFIG_KALLSYMS=yになっていれば機能するはずです。
I/O統計情報と同様にwchanも特権の有無で挙動が変わります。動作例を見た方が早いでしょう。
$ LANG=C ps aux | grep 'systemd --user$' katsuhi+ 1535 0.0 0.0 22004 12048 ? Ss Mar08 0:00 /usr/lib/systemd/systemd --user $ cat /proc/1535/wchan ; echo 0 $ sudo cat /proc/1535/wchan ; echo do_epoll_wait
特権があればdo_epoll_waitが読めますが、特権がないと0が読めます。不思議な動きですね。
なぜこんなことが起きるのか?Linuxカーネルのコードも見ておきます。
// fs/proc/base.c
#ifdef CONFIG_KALLSYMS
/*
* Provides a wchan file via kallsyms in a proper one-value-per-file format.
* Returns the resolved symbol. If that fails, simply return the address.
*/
static int proc_pid_wchan(struct seq_file *m, struct pid_namespace *ns,
struct pid *pid, struct task_struct *task)
{
unsigned long wchan;
char symname[KSYM_NAME_LEN];
if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) //★★これ★★
goto print0;
wchan = get_wchan(task);
if (wchan && !lookup_symbol_name(wchan, symname)) {
seq_puts(m, symname);
return 0;
}
print0:
seq_putc(m, '0');
return 0;
}
#endif /* CONFIG_KALLSYMS */
以前見た/proc/[pid]/ioと同様で、先頭にptrace_may_access()のチェックが存在していて、チェックに引っかかると常に'0'を返す実装になっています。読めるかどうかの判別がopen()でもread()でもできない、内容で判断するしかない新手のパターンです。
何かの事情でwchanを読めるかどうかチェックするとしたら、試しにread()して内容が'0'かどうかを見るwchan専用の処理を書くしかないですね。なかなか面倒な存在です……。
給与明細を見ていて、なんか健康保険料がやたら高くないか……?と気になりました。要因の一つは見た目の問題です。今の会社はこれまで勤めてきた会社と給与制度が違ってボーナスがありません(年俸の12分の1 = 月給)から、同じ年収でもボーナスがある場合に比べて月給が高く見えます。でもこれは見た目だけの問題で気にしなくて良いです。
他の可能性があるとすると、所属する健康保険組合が全国健康保険協会(協会けんぽ)に変わったことです。協会けんぽ(令和6年3月〜、東京)の料率を調べると、
でした。ちなみに大手企業の健保は料率8〜9%くらいが多いらしいので、それと比べたら高いです。私のような40歳以降のおじさんだと、介護保険料1.6%が上乗せされるのでさらに高くなります。辛い。
会社の方針で協会けんぽから「VCスタートアップ健康保険組合」に切り替えるそうで、保険料率が下がるかもと案内がありました。うお〜良いじゃないかと思って調べてみると、
でした。若い人は確かに安くなります。ただ残念ながら40歳以降のおじさんの場合はあまり変わりません。介護保険が協会けんぽの1.6%より割高の2.18%に設定されているためです。スタートアップは若者が圧倒的に多いと思うので、若者が得する設計にするのは当然ですね。仕方ないね……。
目次: 車
先週、ディーラーに半年点検に持っていったら毎度おなじみのバッテリーがイカレていて、日帰りの予定が1週間の入院と相成りました。バッテリー液の比重が1.2くらいになっていたみたいです(本来の比重は1.28)。今度こそバッテリー交換を提案されるかな?と思いきや「充電してみます!」とのことでした。
今回も何とかバッテリー君は復活してくれたようで良かったです。次はもうダメそうな雰囲気を感じましたけど……これまでのバッテリーに比べたら割と長期間耐えているのでまあ良いでしょう。
バッテリーが早々にイカレてしまう原因は、社外セキュリティの待機電力がでかいことと、あまりにも乗らなさすぎなことで、大阪に住んでいた10年以上前から原因は明確なんですが、ライフスタイルはそんな劇的に変えられないのです。
< | 2025 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | - | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | - | - | - | - | - |
合計:
本日: