とある個人の健康管理日誌

うつ状態である私の日々の健康状態を淡々と綴っていきます。

7月05日(日)の記録

7月05日(日)

今日も昼まで寝て、午後から例の件の続き。

とうとう不具合の原因までたどり着いた。64bit対応しているのだが、とある関数の戻り値(size_t = unsigned long)を、U32(unsigned int)で受けている箇所があって、その後の比較条件で外れてしまい無限ループ(をしてその中で malloc していたので OOM)という感じだった。U32 を size_t にすると症状はピタリと治まった。それにしても苦労の連続だった。

  • とあるメソッドを叩くと、2秒と立たずにOOM→再現は容易だが発生箇所特定が難しい
  • プロファイラでメモリの内訳をみると Java側ではなく Native 側→malloc から箇所を特定していくしかなさそう
  • Android 環境だと malloc に hook をかけることができるのだが、端末を root 化する必要がある
  • root 化するのに twrp とか magisk とか使え(使うのが楽)とのことだが、慣れてないもので四苦八苦(情報漁るのと試行錯誤で2日は潰れた)
  • malloc hook も公式にあるとおりにやってもなかなかうまくいかない(最終的にはどうにか機能した→これが大きかった)
  • hook で引っ掛けた箇所をデバッガで調べるのだが、呼び出し回数が非常に多い(当たり前)ため、どうにか工夫しないとダメかな?って思ってたら、特定のスレッドの特定の箇所が何度も呼ばれていることに気がついた(これが無限ループの箇所)

実際には、上記に加え、Android Studio の今回の対象箇所(ライブラリ)にブレークポイントを設定する、というのもネットで調べただけではわからなかった(ちょっとした閃きで発見)。等々、道のりがすごく長かった。

まだ不具合があるかも知れない(気になるところがあり修正要かも)が、ひとまず山を越えた気がする。

ここ2週間程度?これ以外のことを全くやっていないので、ぼちぼち3Dプリンタ作業も復活させたい。今日はもう疲れたので何もしないが。

7月04日(土)の記録

7月04日(土)

今日は昼までゆっくり休んで、午後からJNIの件。

Pixel 3 の root化、いろいろわからない状態で少しずつ始めて、結局夜までかかってしまった。なんとか mallocデバッグができる環境ができたので、これから調査開始だ。すごく道のりが長かったので、なんとか成果を挙げたい。でもすでに体力が削られてしまっている...

7月03日(金)の記録

7月03日(金)

今日も仕事が辛い。出勤してから瞬きするたびに意識が飛ぶ、という現象に見舞われてしまった。よっぽど嫌なんだろうなぁ。

とは言え、昨日よりは幾分マシで、なんとかやり過ごすことができた。進捗上も遅れはない。まあ内容的には手抜きな面もあるが。

やっと自由になれる週末だ。JNIの例の件をさっさと潰さないと、本当の自由は訪れない。自由は自分で獲得するもの、だな。

7月01日(水)の記録

7月01日(水)

今日から新しい客先作業。どんな作業かと不安に思っていたら、想像以上に辛い状況だった。

まあありがちなやつで、インターネットでの調査とかが出来ない、作業端末にソフトを勝手に入れられない、等々。仕事自体は今日はイントロということで軽い作業だったが、どうにも精神的にやられてしまう。疲れはしなかったが、辛い。3ヶ月の契約なので、3ヶ月もの間絶えなければならない。

仕事以外の楽しみが必要、なのだが、仕事で拘束される時間がもったいない。辛い。

6月30日(火)の記録

6月30日(火)

今日は自宅からTV会議の予定だったが、Skype for Business がうまくつながらず結局会社にいった。

行っては見たものの、結局ゲストで接続して打ち合わせを実施。要はライセンスの問題だったようで、ゲストにせざるを得ない状況だった。事前に知っていたら行く必要がなかったので少し無駄骨だった。

打ち合わせ内容は、見積もりする対象のヒアリングというか説明を受けるという感じだったのだが、あまりにばっくりしていて、精緻な見積もりは出来なさそう。規模がそれなりに大きいので、リスク込みで大きめにみるしかない。今週末あたりに決着しそう。

それとは別で、今日会ったメンバーとの話の中で、自分もWindowsマシンが必要という話になった。今までずっと Mac だけでなんとかしてきたのだが、これから先 Excel でのドキュメントを扱う機会が多くありそうなので、避けられないようだ。ネットをいろいろ見たところ、ThinkPad X13 の Ryzen モデルが良さそう。ハイスペックにしても値段があまり上がらないので、スペックをマシマシにしよう。熱が気になるところだが、気になるようであれば時折強制的に風を当てて冷却するなどしてごまかせば良いか。最近は Windows 10 でも開発環境作るのが楽になりつつあるので楽しみだ。ARM版Macも欲しいのだが、最初の世代はスキップして、2世代目あたりを狙うことにしようか。

6月29日(月)の記録

6月29日(月)

今日も自宅で作業。相変わらず JNI 関連の件で苦戦している。

OpenGL の描画が始まったタイミング(wait している Thread に notify した途端)で、どういう処理が走っているのかを捉えられないのだが、一気に Native メモリを食い尽くしてしまう。純粋に Java 側なら追いやすいのだが、消費しているのが Native 側のメモリなので、追いかけづらい。この件が片付かないと、7月からの仕事が辛くなるので、どうにか片付けたいのだが、正直うまく行く自信がない。こんなにどハマりするのはずいぶん久しぶりな気がする。まあ頑張るしかない。