2007年12月25日
わたしはsprintfではまりました
bkブログに「strchr() ではまった話」と言うのがあるんですけど…strchrが‘\0’(ナル文字)に常にマッチするとは知らなかったです ![]()
と言うか、strchrって固定の文字を探す場合(第2引数を可変にしたことがない)にしか使ったことないですね。不思議と。
で、わたしがはまったのはsprintfで某OS(リアルタイム系UNIX)で気軽にsprintfを使ってしまったわけですが…使ったのが、スレッドの中だったんですね。
すると、何かのタイミングでCoreさんを吐いて落ちるわけです
解析して行くとsprintfの中で落ちてるっぽいわけですが…原因がさっぱりわからないわたしはNDAにサインまでして、某OSのライブラリソースの中へ…。
すると、どうでしょうsprintfとprintfのコードが内部的に共有されていてリダイレクト先を変数にしてsprintfを実装しているコードになっているんです。ある面で、うまい実装だなぁ~と思いつつ
むむ、このコードだと…
man sprintf
すると、そこには虚しくも英語で「スレッドセーフじゃありません」との文章が…
それ以来、スレッドで使うライブラリ、関数に対して
ようになりましたとさ
TrackBack URL :
