実行時にSegmentation fault

HP-UX11を使って、32bitで使っていたCのソースを64bitでリコンパイルする作業
をしている。

コンパイルオプションもかなり変わってしまってかなり手こずったのだが、どう
にか通るところまでこぎつけた。

で、実行してみるとSegmentation fault!

しょうがないので、GDBを使ってデバッグしてみる。

なにやらsqlcxt関数を呼び出す付近で落ちている。

となると、Oralce接続部分でかと予想。

周辺で使用している変数をかたっぱしから見てみると、Oracleへ接続する際に使
用するUsernameとPasswordの変数がおかしい。


(gdb) p username
$1 = 0xfffffffffffffe22


この2つの変数、getenv関数を使って値を取得しているのだが、ちょっとここを
うたがってみる。


(gdb) p getenv("USERNAME")
$3 = -728


ビンゴ、変な値を取ってきている。


で、これを使っているソースを見てみると、なんと、stdlib.hをincludeしてい
ない。

これでもコンパイルは通るんですね。。。


ということで、#include を追加することで問題解決。