- kosaki55tea
- 13468
- 4
- 40
- 10
OpenLDAP slapd はマルチスレッドで slapd-shell(5) (シェルバックエンド) は fork & exec してシェル起動している。何か工夫しているんだろうか? slapo-ppolicy 用パスワード検査モジュールを自作したのだが、そいつでは特に何も…。
2013-03-24 02:57:32slapd-shell(5) は使ったことないし、どうせ誰も使ってないだろうから問題があっても発覚していないだろうけど。
2013-03-24 02:58:34@satoh_fumiyasu fork & execしたら安全ですよ。execしたあとは libc lockもなにもすべて綺麗サッパリ消えてしまうのでなにやってもOKに戻ります
2013-03-24 03:00:34fork & exec が何やっているのか、知っているのは概要くらいで、実際何ごちゃごちゃやっているのか知らないので、どうして async signal safe なのしか駄目なのか想像できない。 https://t.co/WXFZlpqukD
2013-03-24 03:01:42@kosaki55tea あー、大抵のマルチスレッドプログラムはIO待ちのためにスレッド使ってるんで、 fork-exec じゃない fork は使い物になりませんねぇ。。。
2013-03-24 03:04:04@methane もちろん libc lock の構造はlibcに依存するので libcの内部構造にものすごく詳しいとOS依存で刺さらないコードを書くことは可能です。たとえば僕ならglibc依存でいいなら書けると思う
2013-03-24 03:05:33@satoh_fumiyasu malloc が内部でロックを取得している最中に別スレッドが fork すると、子プロセスでは malloc を呼び出していたスレッドが消え去るのでロックだけが残ってしまいます。
2013-03-24 03:05:48@kosaki55tea でも最近は Linux の libc も glibcだけじゃなくて eglibc, android の libc とかありますもんね。。。
2013-03-24 03:07:21@kosaki55tea わかったような気がします。ほかのスレッドを libc ロックしてない状態で一時停止して fork …とか実装すればよいのかな。難しい、面倒 and/or 遅いかな。よくわからんが…。
2013-03-24 03:12:37@satoh_fumiyasu Linuxではforkしたスレッド以外は消え去りますね。Posix全部かどうかは知りません。forkしたタイミングが正確にわかるのはforkしたスレッドだけなので、他のスレッドまでコピーされるとそれはそれで怖いことが起こると思います。
2013-03-24 03:13:32カーネルとか libc とかそのレベルのレイヤーを読み書きしている人は、やっぱり強そうだなー。座学程度なら知っているんだが、足りないなー。
2013-03-24 03:21:44fork/execの間に何か処理ができてしまうのはイロイロよくないですよ。どうせやりたいことはforkじゃなくてpopenなのだから、みんなErlang/OTPを見習うべき
2013-03-24 03:21:59pthread なコードはいくらか読めてちょっとしたパッチを書いたことはあるけど、自分で実装したことはない。
2013-03-24 03:23:46@repeatedly fork(2)やexec(3)を生で呼び出せなくしてあるよ。popenみたいなことしてパイプで通信する代わりにメッセージを送ったり受け取ったりするだけかな。
2013-03-24 03:25:40@kuenishi ほほぅ.ErlangのレイヤーからはそもそもAPIとして提供してなくて,触れないという感じですかね.
2013-03-24 03:26:46なるほど.まぁ言語によってAPI変わってくるし,軽量プロセスとかみたいないわゆる強力なメッセージングの仕組みがすでにあるのであれば,確かにいらないのかもしれん.
2013-03-24 03:28:39@repeatedly Rubyで、fork/execをプリミティブに見せてるのってProcを渡してメモリをいじることなく簡単に実行できるようにするため、とかそういう理解で合ってる? それとも単にシステムコールは全部そうしてある?
2013-03-24 03:30:04@kuenishi 知りません!CとかPerlにあったからそのまま持ってきたんでは?と思ってますが,今だとspawnとかあったりで,forkをガチで使っている人は減ってきているイメージですが,なんとも…
2013-03-24 03:34:22