わたしはsprintfではまりました

bkブログに「strchr() ではまった話」と言うのがあるんですけど…strchrが‘\0’(ナル文字)に常にマッチするとは知らなかったです :shock:
と言うか、strchrって固定の文字を探す場合(第2引数を可変にしたことがない)にしか使ったことないですね。不思議と。

で、わたしがはまったのはsprintfで某OS(リアルタイム系UNIX)で気軽にsprintfを使ってしまったわけですが…使ったのが、スレッドの中だったんですね。

すると、何かのタイミングでCoreさんを吐いて落ちるわけです :roll: 解析して行くとsprintfの中で落ちてるっぽいわけですが…原因がさっぱりわからないわたしはNDAにサインまでして、某OSのライブラリソースの中へ…。

すると、どうでしょうsprintfとprintfのコードが内部的に共有されていてリダイレクト先を変数にしてsprintfを実装しているコードになっているんです。ある面で、うまい実装だなぁ~と思いつつ :shock: むむ、このコードだと… :?:

man sprintf

すると、そこには虚しくも英語で「スレッドセーフじゃありません」との文章が… :cry:

それ以来、スレッドで使うライブラリ、関数に対して
まずスレッドセーフの確認をする
ようになりましたとさ :)

TrackBack URL :

No comments yet. Be the first.

Leave a reply