
Old New Thing: 未定義動作はタイムトラベルを引き起こす(他にもいろいろあるけど、タイムトラベルが一番ぶっ飛んでる) Undefined behavior can result in time travel (among other things, but time travel is the funkiest) - The Old New Thing - Site Home - MSDN Blogs 久しぶりに紹介するRaymond Chenのブログ記事。 C言語とC++では、様々な部分が、ドラゴンの住まう地というレッテルを貼られている。いや、正式には、未定義動作とされている。 未定義動作が発動した場合、何でもありだ。例えば、変数は同時にtrueでもfalseでもありえる。John Regehrは興味深い例のリストをまとめて、未定義動作コンテストの受賞者もある。 以下の関数を
random_r 関数は glibc が提供しているリエントラントな擬似乱数生成APIです。 複数のスレッドで乱数を使いたい場合はこれを使うべきらしい。*1 複数のスレッドが random() を使うような状況では、この関数を使用すべきではない。 その場合には random_r(3) を使うこと。 http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/random.3.html ただ少なくともこのマニュアルが不十分で、man を読んだだけだと正しく使うことは出来ません。 以下に私の手元で 動いたように見える コードを示します。 /* * $ gcc -o test test.c && ./test */ #include <stdio.h> #include <stdlib.h> int main (int argc, char * a
作者:Simon Tatham, 職業プログラマ兼、フリーソフトウェアのプログラマ [ English | Português | 简体中文 | Česky | Dansk | Deutsch | Español | Français | Magyar | Italiano | 日本語 | Nederlands | Polski | Русский | 繁體中文 ] はじめに おおやけに利用されるソフトウェアを書いたことがある人なら、おそらく一通は質の悪いバグ報告を受け取ったことがあるだろう。何も言わんとしない報告(「動きません!」)、意味をなさない報告、十分な情報を供さない報告、誤った情報を含む報告などだ。なかには、使用法の誤り、他のプログラムの欠陥、ネットワークの障害などに起因する問題の報告まである。 技術サポートがぞっとする仕事とみなされるには理由があり、その理由こそが質の悪いバグ報
Phoronixで知ったが、Linus TorvaldsがGCC 4.9.0のコード生成にブチ切れている。 問題はLinuxカーネルのload_balance()がランダムにパニックを起こすというもので、その原因は、報告者の使っているコンパイラーであるGCC 4.9.0のコード生成がおかしかったという話だ。 Linus様は御自ら生成されたコードを読み給い、平生と変わらぬ調子で物事の道理を示された。 Linux-Kernel Archive: Re: Random panic in load_balance() with 3.16-rc From: Linus Torvalds Date: Thu Jul 24 2014 - 14:47:25 EST On Wed, Jul 23, 2014 at 6:43 PM, Michel DÃnzer <michel@xxxxxxxxxxx> wro
Perlのbug report eco-systemまわりはOSSとしてはわりと理想的だと思っています。つまり有用なレポートを生成する仕組みがあり、perlコア開発者だけでなくライブラリ開発者もその仕組を活用できるため、可搬性のあるソフトウェアとしてメンテナンスし続けやすいのです。もっとこのあたりはもっと真似されるべき。 まずバグレポートには現象と再現手順と環境の情報が必須ですが、環境の情報は perl -V で非常に簡単に取得できます。これは以下の情報を含みます。 ソフトウェアの名前とバージョン (e.g. perl 5.18.1) ターゲットプラットフォーム (e.g. osname=darwin, osvers=12.4.0, archname=darwin-2level) ビルドオプション (e.g. config_args='-Dprefix=/Users/goro-fuji/.
海外FX業者を利用する上で、ボーナスは絶対に欠かせません。口座を新規開設するだけでもらえる「口座開設ボーナス」、入金時にもらえる「入金ボーナス」、その他にもキャッシュバックなど、様々なボーナスがもらえます。 受け取ったボーナスはそのまま取引に使え、利益が出た時は出金することも可能です。お得はあっても損はないボーナスなので、海外FX業者を選ぶ際には必ず比較しておきたいところです。 そこでこの記事では、海外FXボーナス(口座開設ボーナス・入金ボーナスキャンペーン)全195社を徹底的に研究した上で、おすすめ完全比較ランキングにまとめました。日本人に人気のFX業者だけでなく、マイナーの海外FX業者や注意点なども詳しく解説していきます。 「海外FXボーナスが豪華な業者をすぐに知りたい」という方向けに、海外FXボーナス選びに役立つカオスマップを作成したのでこちらも併せて参考にしてください。 「どのFX
ソースコードのなかでバグが多いのは、より高頻度に、かつ最近になって集中的に直している部分。これが、グーグルで採用された「バグ予測アルゴリズム」であることを、先月の記事「グーグルはコードの品質向上のため「バグ予測アルゴリズム」を採用している」で紹介しました。 そのバグ予測アルゴリズムを実装したツール「bugspots」がオープンソースとして公開されています。 gitのレポジトリを分析 bugspotsはRubyで記述されており、gitのレポジトリから履歴を読み込んで分析し、どのモジュールにバグが含まれている確率が高いかを示してくれます。 以下のようにインストールして実行(説明ページから引用)。 $> gem install bugspots $> git bugspots /path/to/repo $> git bugspots . # (in current git directory)
昨日のブログエントリ「PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)」にて、crypt関数の重大な脆弱性について報告しました。脆弱性の出方が近年まれに見るほどのものだったので、twitterやブクマなどを見ても、「どうしてこうなった」という疑問を多数目にしました。 そこで、このエントリでは、この脆弱性がどのように混入したのかを追ってみたいと思います。 PHPのレポジトリのログや公開されているソースの状況から、PHP5.3.7RC4までこのバグはなく、PHP5.3.7RC5でこのバグが混入した模様です。RC5はPHP5.3.7最後のRelease Candidateですから、まさに正式リリースの直前でバグが入ったことになります。 バグの入る直前のソースは、ここの関数php_md5_crypt_rから参照することができます。以下に、おおまかな流れを図示します。まずはバ
The most stupid C bug ever | elpauer 先日は徳丸浩さんによる PHP5.3.7 の crypt 関数におけるバグの解説を読み、世界的に有名なオープンソースソフトウェアでもこんな初歩的なミスをやらかすのかとすごく親近感が湧いてしまったが、Pau Garcia Quiles が語るこれまでで最も愚かしい C のバグとは何か? 彼はテンポラリファイルを tmpfile() で作る Unix アプリケーションの移植をやっていた。 else if (code == 200) { // Downloading whole file /* Write new file (plus allow reading once we finish) */ g = fname ? fopen(fname, "w+") : tmpfile(); } マイクロソフトの tmpfile
【バグ管理の作法】Trac徹底活用! 第2回:なぜTracの導入に失敗するのか? 著者:masuidrive 公開日:2007/12/13(木) Tracの導入現場の今 「第1回:なぜバグ管理システムを使うのか?」でも紹介したように、TracはSubversionと連携するオープンソースのバグ管理システム(BTS:Bug Tracking System)だ。Ruby on Railsなど多くのオープンソースプロジェクトで利用されており、最近では商業開発でもっとも多く使われているツールの1つになっている。 その一方で、Tracの導入効果が出ていないケースも多々ある。それはなぜだろうか? Tracの肝は「チケット管理」の運用にある! Tracにはコンテンツを管理するシステムとしてのWiki、Subversionなどのバージョン管理システムのファイルをWebから閲覧するための「リポジトリブラウザ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く