LoginSignup
2
2

More than 5 years have passed since last update.

cronで実行した時と、手動で実行した時のint型のビット数が変わった

Posted at

実行環境は linux/arm

Go言語でBattlefield4のバトルログAPIからユーザ情報を取得するライブラリを作りました。
bf4-stats
これはjsonから構造体にマッピングしてそれを返すだけのライブラリです。
これを使ったソフトウェアを手動で実行するとエラーはでませんが、cronに実行させると下記のエラーがでました。

panic: json: cannot unmarshal number 17179869184 into Go value of type int

これは、構造体のこの部分の変換で起こっていました。現在は修正したので、mapの値が[]int64になっていますが、エラーが出ていた時は[]int型になっていました。

つまり、手動で実行した時は[]int型が64ビットintスライスとして評価され、cronで実行した時は32ビットintスライスとして評価されていたようです。

CPUアーキテクチャは同じはずなのでint型も手動と同じビット数で扱われると考えていましたが違うようでした。

まとめ

もしかしたらアーキテクチャがarmだからかもしれませんが、このようなことがあったので、大体のビット数がわかっていればちゃんとオーバーフローしないように型を定義したほうがいいみたいです。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2