見出し画像

[2017年12月~2018年02月]Clangは、あぁ名前は知っている。LLVMは、そういうのあるね。 で挑む

[2017.12-2018.02]

2017.12.11(月)
2泊3日の沖縄旅行から帰ってきたばかりの自宅で20時くらいに携帯電話がなった。
取引先のY氏だった。
帰ってきたばかりだったので思考が働かず、とりあえず電話にでてしまった。
(これが昼だったらまだ沖縄にいたので電話はスルーしていたと思う)

電話は仕事の話しだった。
「アルバイトをやらないですか?」
唐突な話しだった(平日の日中は別のジョブをしているのだが…)。
LLVM+あるアプリをあるシステム(SPARCチップ使用)でビルドしたアプリを実行するとエラーでコケるとのこと。
LLVMやClangは、本でちょっと見たことがあるので全くの「ハァ???」ではなかった。
実行したエラーメッセージがあるので、エラーの原因を突き止めて実行できるようにして欲しいとのこと。
なんだか良くわからなかったので、とりあえず軽く資料をメールでもらって明日、直接会って詳細は聞くことにして電話は切った。
まだ、頭が、ソーキそば なのである。
まぁ、末端のエンジニアにくる仕事はこんな感じの無茶ぶり案件なのでなれていますが…

日中の仕事もあるし、いつやれる?夕方から深夜にかけて?と、もやっとしながらもらった資料で夜中にネットでいろいろ調べてみた。
googleでキーワード ELF resolve(省略) SPARC を検索してみた。
なんかエラーメッセージについてGitHubらしきパッチプログラム(パッチというか修正前後の差分をとったもので修正部分のみしかないもの)がサイトにあった。
俗にいう切れ端がころがっていたそんな感じ
なんかあるなぁ。
(日本語サイトじゃないですよ、この手の問題解決は英語圏の人が解決していることが多いので)
これなんじゃないの?と思った。頭は働いていないので思っただけ…
ちなみにLLVMの開発言語はC++です。

2017.12.12(火)
昨晩みつけたパッチプログラムのサイトを朝一でY氏にメールした。
※結局このパッチプログラムがビンゴでこれもとに今回の対処を行うことになる…
※つまり問題点を聞いたその日に対処方法を見つけたということである
※なんか道に落ちていたちょっと色の違う石が貴重な隕石だったみたいな感じである
話し合いをしていて詳細が分かってきた。あるシステムとは、2位じゃだめなんですかの「京」だった。
また、えらいコアな仕事を受注してきたなぁと思った。
このアルバイトは、自宅でOK(プログラムを解析&改造することについて)、19:00頃から開始して夜中の時間帯でOK、問題を解決できなくてもOK(←へぇー)、実機に接続する場合は日中の時間に外出して事務所からネット接続。
解決できなくてもOK以外は、なんとなくリスキー。
とりあえず、ジョブを受注することになりました。

2017.12.19(火)
見積り依頼をメールで受領、ここから先行してジョブ開始。開始した日に忘年会。

2017.12.21(木)
38度の熱がでたので仕事お休み。

2017.12.22(金)
見積書をメールで送信、そして熱が出ていたのに忘年会w。

2017.12.26(火)
仕事をするにあたりセキュリティ教育を受講する必要があり、その日程を決める必要がある。
2018.1.9にお願いした(年末だったしネット接続は先でよいので年明けにした)。そして、夜中にまた熱が出た。

2017.12.27(水)
熱が出たまま 早朝に病院に行く。
この日も仕事を休みにした。それでも例のプログラムの切れ端とOracleのサイトを参考に資料の作成を行い、LLVMのプログラムを修正して、資料と修正したソースコードをF社にメールした。
Oracleサイトは、SPARCのELFの処理内容が書いてあるのでプログラムの切れ端が正しいのかチェックのと提出資料作成のために使った。
ここらへんのローレベルは個人的には好きな分野。
https://docs.oracle.com/cd/E19620-01/805-5821/6j5ga47bq/index.html
※もともと、SPARCは、SUNマイクロシステムズが開発
※Oracleは、SPARCの今の所有者である

2017.12.28(木)
この日も休み。 熱が引かない T_T

2017.12.29(金)
病院で検査したところ軽度の肺炎だった
この日が仕事納めだったが、そんなこと気にかけれる状態ではなかった。
業務として2017年が終了

2017.12.31(日)
12月27日にLLVMを修正したソースコードは、見といてねくらいの気持ちでファイル(.cpp)だけをF社に提供していたのだが、F社からそれをビルドしたらエラーになったよと言われた。
そりゃそうだincludeファイルを提供してないからね。
でも率先してやってもらえるのはありがたい
includeファイルいるでしょうという感じです。
includeファイル必要ですよで w 来年へ

2018.01.01(月)
あけおめ
昨年の8月に義理の母が亡くなったので正月らしい正月はない

2018.01.04(木)
仕事始め
年末年始には、Oracleのサイトをもう少し詳しく読んで理解した。

2018.01.09(火)
去年、日程を決めていたセキュリティ教育を受講。
これで「京」に接続できる資格はもらえた。と思ったらもう一つ受講する必要があるとのこと。

2018.01.11(木)
セキュリティ「京」のアクセスクライアント証明書類受領しました。

2018.01.13(土)
今日は、健康診断。体調戻っているようないないような。

2018.01.15(月)
F社側の担当者がインフルエンザでセキュリティ受講は中止。
冬はみんな病気がちだ。

2018.01.17(水)
LLVMの本「きつねさんでもわかるLLVM」を購入。
購入したが特に役に立たなかった。でも読み物としてはまぁまぁ面白かった。
https://tatsu-zine.com/books/llvm
※ちなみに私は、このような表紙の絵柄は苦手だ

2018.01.19(金)
やっとセキュリティ受講。これで「京」に接続できる資格はもらえた。

2018.01.23(火)
ここから「京」に接続する事務所にあるデスクトップパソコンをさわる。
マニュアルを参考にしてTeraTermでつなげようとするが、つながらない。
接続トライするが、TeraTermでつながらない。

2018.01.24(水)
つながらないのが、こちらのネットワーク設定の問題だとわかる。外部へ接続許可申請出し、ネットワーク認証もらう作業をやってもらう。
よくあるよね。ネットワーク環境ってw 難しい

2018.01.25(木)
ネットワーク環境繋がらないユーザIDの勘違いの件あり(これは自分がマニュアルの読み違え)
ユーザ認証の勘違いをしていたがTeraTermで夕方にやっとつながる。
(日中のジョブはちょっとお休みした)

2018.01.26(金)
19:15 LLVMのビルド手順の詳細をF社からメールでもらう。
そして、ビルドに3時間30分掛かることを知る w
夕方からビルドすると毎日21時すぎるやんw
ビルドは自宅から接続できない(事務所のデスクトップパソコンからのみ)ので、どうしょうか…
とりあえず、来週から問題となっているアプリ実行でエラーとなることを再現させることにする。

2018.01.29(月)
日中のジョブをちょっと抜け出して日中にビルドを実行だけして日中のジョブに戻る作戦とした。
15:00にビルド実行して18:30以降にビルド確認
この日にそれをやってみてLLVMのビルドに初成功 パチパチ
そしてLLVMインストールをやってみるが、
19:45 LLVMインストールでエラーとなりF社にメールを送る
どうやらディレクトリオーナー権限がインストール先のディレクトリにないためエラーのよう orz…

2018.01.30(火)
13:36 ディレクトリオーナー権限を変更してもらったメール受領
LLVMをインストールして成功、エラーとなるアプリをインストール。
そしてアプリのデモを実行して問題となっているエラーになることを確認できた。
問題を再現できるところまで到達。

2018.01.31(水)
問題となっているエラーは再現できたので、LLVMのソースを修正したプログラムに入替えてLLVMをビルドする。
ビルドするだけならもう一人協力者の方がいてくれてその方にお願いした。
朝一で修正したプログラムの入替え作業を行い。
協力者のIさんにビルドの依頼をしたが、途中でビルド失敗 orz…
この日は、ビルドのエラー確認でおわる。

2018.02.01(木)
事務所でデスクトップパソコンを使っていたが、ノートパソコンに切り替えて欲しいということで別途ノートパソコンを受領、そして設定作業を行う。
そして、ネットで外部にでれなかった…
Iさんに連絡、社外にでれないと連絡。

ノートパソコンの設定と並行してビルドのエラーを確認するため再度ビルドを実行
ビルドエラーとなる80%から再度ビルドが走るが前回と同様にエラー
頭が痛い

2018.02.02(金)
ノートパソコンで社外にでれるようになった。
16時過ぎにノートパソコンの環境が整った。
LLVMをビルドしてみたところ 0131 ステップという同じところでNGとなった。
もう一度ビルドして、プログラムエラーだとわかる。

80%のエラーでビルドが停止するのだが、ちょっと前にエラーログが出力されていた。
ビルド処理は、プロセスが多重で走っているのでビルド処理の出力でエラーの部分が最後に出力されないので直ぐにわからなかった。
コンソールに表示されているビルドの出力を上にスクロールしていったところエラーの部分を見つけた。
なので、この2日間、エラーになっていることに気づけなかった orz (ちょい時間の無駄)
今後もこれは気を付ける必要がある

気を取り直して、プログラム修正して、再度ビルド

そんなことをしていると、F社のTさんから進捗うかがいメールあり、現状を返信した。

2018.02.05(月)
ビルドは3時間30分かかるので、何度もプログラムミスはできない。
そんな気持ちで挑んだところLLVMビルド成功 パチパチ
エラーとなるアプリをインストール。
そしてアプリのデモを実行してLLVMを修正したので正常に動作しました。
Y氏にうまくいったとメール。

2018.02.06(火)
F社にうまくいったと伝わる。

2018.02.07(水)
資料を書いてF社にメールで送信

2018.02.08(木)
特になにもしていない

2018.02.13(火)~2018.02.16(金)の9:00まで「京」のメンテナンス期間のためビルドやデモ実行などはできない

2018.02.14(水)
R研と打ち合わせあったみたいで使ってみることになったと18:00にF社のM氏からメールあり

2018.02.19(月)
別途、提供環境でLLVMの修正+ビルド+インストールする必要があるとのこと
18:00~ LLVMを修正してLLVMをビルドをしたが19:00にノートパソコンが予期せぬリブートをしたためNG
(何度もいいますが、ビルドには3時間30分掛かるんです)

2018.02.20(火)
気を取り直してビルド成功。

2018.02.21(水)
最終ソースの確認を行いながら、デモを実行してOK。
提供作業まで完了。

~2018/02/26(月)
最終的な資料を完成させて完了

この記事が気に入ったらサポートをしてみませんか?