Xcode5上のObjective-Cで、32ビットの時は正常なのに、64ビットでだけおかしくなるというバグの解析依頼が来た。
64ビットでおかしくなるのは、主にビット幅による物が多いが、今回はそういうのではなさそうで、ぱっと考えられる原因がなくて難航した。
おかしくなる場所を絞り込んでいった結果、以下のような意外な原因だったので、報告する。
・・・
BOOLで宣言した変数に、YES/NO以外の整数値を入れた場合、その読み出し値が32ビットと64ビットで異なる。
「例」
BOOL flag=2;
本来このような記述そのもの間違いだが、プログラムの開発過程でYES/NOだけでは不十分になって他の値を代入するように変更することはまれにあり、そのときに変数の型を変更し忘れることも(私自身は経験ないが)、あるかもしれない。
このような代入があっても、コンパイラは標準ではエラーにしない(警告もださない)。Objective-CではBOOLはint(charかも)と同等だからである。なので、実行時も書き込みも読み出しも、見かけ上は正常である。
32ビット環境下では、flagを読み出すと2と読める。
ところが、64ビット環境下ではBOOL値に変換される、2は!=0なのでYESとなり1と読み出される。
(読み出し時に変換されているか、書き込み時にすでに変換されているかは不明である。)
すべての場合にそうなるかは未検証だが、少なくともそうなってしまうことがあるというのは確かである。
32ビットと64ビットでのコンパイラの挙動の違いである。
隠れたバグになるので、64ビット対応時には注意。
2014年7月15日火曜日
2013年2月8日金曜日
ATOK2013インストール時の問題→解決
今日発売の一太郎2013「玄」。
早速インストールしてみる。
Windows7PRO 64ビット。
ところが、ATOK2013がどうにも変換モードに入れない。
「テキストサービスと入力言語」でみると「ATOK(64ビットのみ)」と表示されている。
調べてみると、手持ちの数少ない64ビットアプリであるところの「秀丸エディタ」と「ExpLzh」の64ビット版上でのみ変換モードに入ることが出来るとわかった。それとエクスプローラー上(当然これも64ビットアプリである)。
32ビットアプリ上では全滅。一太郎も含めて。だめじゃん。
ATOK2013プレビュー版ではそんなことなかったのに、いきなり製品版でバグか?
電話しようにも大混雑でつながらない。
みんなこの件で電話してるんじゃないか?
ちゅうことで、とりあえず一報。
ちなみにGoogle日本語入力が使えたので、仕事はなんとか終えられたが、
それがなかったらどえらいことだった。
この文章はMac上からなので関係なし。
・・・そして解決・・・
一度ATOK2013を完全削除して、再インストール。このときインストール先が
ProgramFiles(x86)になっていることを確認して進めると直った。
一太郎もいけるし、64ビットアプリ上もOK。
完全削除しないで、上書き再インストールではだめ。
(完全削除にはフリーウエアのGeekUninstallerを利用。「プログラムと機能」から削除した場合どうなるかは不明。)
前に入れてたプレビュー版を先にアンインストールしておかないとダメだったのかもしれない。設定引き継ぐためにはそのままで入れないとあかんのかと思ったのだが。
早速インストールしてみる。
Windows7PRO 64ビット。
ところが、ATOK2013がどうにも変換モードに入れない。
「テキストサービスと入力言語」でみると「ATOK(64ビットのみ)」と表示されている。
調べてみると、手持ちの数少ない64ビットアプリであるところの「秀丸エディタ」と「ExpLzh」の64ビット版上でのみ変換モードに入ることが出来るとわかった。それとエクスプローラー上(当然これも64ビットアプリである)。
32ビットアプリ上では全滅。一太郎も含めて。だめじゃん。
ATOK2013プレビュー版ではそんなことなかったのに、いきなり製品版でバグか?
電話しようにも大混雑でつながらない。
みんなこの件で電話してるんじゃないか?
ちゅうことで、とりあえず一報。
ちなみにGoogle日本語入力が使えたので、仕事はなんとか終えられたが、
それがなかったらどえらいことだった。
この文章はMac上からなので関係なし。
・・・そして解決・・・
一度ATOK2013を完全削除して、再インストール。このときインストール先が
ProgramFiles(x86)になっていることを確認して進めると直った。
一太郎もいけるし、64ビットアプリ上もOK。
完全削除しないで、上書き再インストールではだめ。
(完全削除にはフリーウエアのGeekUninstallerを利用。「プログラムと機能」から削除した場合どうなるかは不明。)
前に入れてたプレビュー版を先にアンインストールしておかないとダメだったのかもしれない。設定引き継ぐためにはそのままで入れないとあかんのかと思ったのだが。
2012年3月1日木曜日
Windows7 64bitで正常動作するソフト
Windows7 64ビットで動作するソフトについても一応記録。
現行版ではないもののみ。
・・・2013/04/12追記
WindowsXPの公式サポートがあと1年ということで、これから7もしくは8への移行を考える人も多いと思う。
8はおそらくVista同様MSの黒歴史OSになると思うので全くおすすめしない。
操作性が変わりすぎており、混乱を招くこと必死だ。
意外にもXPのソフトが7の64ビット環境下でもそのまま動く。
ハードウエアドライバーはダメなことも多いが、すでに多くのソフトが対応版を出しているので、
入れ替えだけでいけることが多い。
万が一動かなければ、7のPro以上なら仮想XP環境を構築できるので、その上で走らせればよい。
ではあっても、異なるOS、というより別のPCに環境を移行することは、かなり難しい。
特にアプリケーションのライセンスや設定を移行するのは手間がかかる。
引っ越しツールというのもあるが、私はそれで成功した試しがない。
移行後に何かしらの問題が発生するため、手動でやったほうがよほどまし、という結果になったことがほとんど。
専門家に任せるか、時間をかけて、手動で徐々に行うのが吉。
現行版ではないもののみ。
- XM6 v2.06
X68000エミュレーター。意外にも(失礼?)一発動作。
- 楽々はがき2009(JustSystem)
- アレンジOK!素材集(JustSystem)
- はがき さくっとファイリング(コクヨ)
・・・2013/04/12追記
WindowsXPの公式サポートがあと1年ということで、これから7もしくは8への移行を考える人も多いと思う。
8はおそらくVista同様MSの黒歴史OSになると思うので全くおすすめしない。
操作性が変わりすぎており、混乱を招くこと必死だ。
意外にもXPのソフトが7の64ビット環境下でもそのまま動く。
ハードウエアドライバーはダメなことも多いが、すでに多くのソフトが対応版を出しているので、
入れ替えだけでいけることが多い。
万が一動かなければ、7のPro以上なら仮想XP環境を構築できるので、その上で走らせればよい。
ではあっても、異なるOS、というより別のPCに環境を移行することは、かなり難しい。
特にアプリケーションのライセンスや設定を移行するのは手間がかかる。
引っ越しツールというのもあるが、私はそれで成功した試しがない。
移行後に何かしらの問題が発生するため、手動でやったほうがよほどまし、という結果になったことがほとんど。
専門家に任せるか、時間をかけて、手動で徐々に行うのが吉。
2012年2月11日土曜日
Windows7 64ビット版で不具合を起こすソフト(一部解決策あり)
今回導入したのはWindows7 Proの64bit版であるが、やはりというか想像通り、一部に
不具合を起こすソフトがあった。うちでわかったものを列記しておく。
すべて元はXP対応の物で、32bitのWindows7では問題なかった物である。
64bit対応不足と言うより、単にバグな気もする。
→仕様通りだそうですm(_ _)m。
64ビット版ではアーカイブ関係のDLLも64ビット版を入れないと展開できないのかも知れず。
うちでは↓理由によりExplzhは32ビット版なのでLZHが展開できない状態。
ということで、現在は32ビット版を利用中。機能差なしなので問題なし。
ExpLzh 64ビット版
別途7-ZIP64/TAR64.DLLを入れろと言ってくるが、指定されたwindows\system32にコピーしても、なぜかsyswow64に入ってしまう。OSが勝手に入れ替えているらしい。回避策が見つけられなかったので、32bit版を入れた。機能差なしなので問題なし。
→エクスプローラーなどによるファイルのコピーではうまくいかず、ファイルをいったんクリップボードにコピーしてペーストするとうまくいくらしい。(情報感謝!)
JustSystem 三四郎2009
ウインドウサイズを変更すると、広がった部分が再描画されない。
→治ったみたい。が、三四郎2009は日本語入力システムとしてATOKしか受け付けない問題がある。可能なら、早いうちにLibreOfficeやMS-Officeなどに移行したほうが良い。
Ztop v1.72
マウスカーソルが飛んだり、ホイールスクロールで変にスクロールしたりする。
V1.73にして、これをうまく使う情報がここにあった。
一応不具合は出なくなった模様。
コントロールパネル~管理ツール~サービス
ウインドウを右側広げると描画されない。標準同梱ツールがバグっててどうするよ。→治ったみたい。
WindowsXP/7-32bitまでで動いていたスクリーンセーバープログラムは、軒並みアウト。
画面復帰時にタスクバーが消えてしまう。パスワードをかけていれば大丈夫らしいが、基本的に64bit 7対応とうたっている物以外は使わない方がよさそう。
32ビット 7では問題なかったので、64ビット 7のバグのような気もする。
e-TAXで使うカードリーダーSHARP RW5100
ドライバーが64ビットに対応してない。
SHARPのサイトでは未対応と書いてあったが、OEMのサンワサプライの製品では「対応」となっていた。
実際、オンラインでドライバを探すとインストールできた。
e-TAXのソフト自体は64ビットでも動く。
IO-DATA USBGPS2
メーカーではWindows7は32bit版も含め一切サポートしていない。
FT232R USB UARTというドライバが×と出る。 このドライバは、その大本のメーカーFTDI社のサポートページから64ビット対応版がダウンロードできる。
executable版を選んだ方が楽だと思ったが、困ったことにこれを実行してもドライバは正常にインストールされない。
仕方ないので、zip版を適当な場所(デスクトップとか)に展開する。デバイスマネージャーからFT232R USB UARTを選択してプロパティ~ドライバーの更新~コンピューターを参照してドライバーソフトウエアを検索します~場所はc:\からで、サブフォルダも検索させる。すると「証明書がない」とか言ってくるが一応見つかるので、インストール。
これでFTR232Rは動くようになるが、まだ「USB Serial Port」が動かないと言ってくる。
もう一度同じようにUSB Serial Portでも検索してインストール。
これで必要なドライバがすべてインストールされ、COMポートも確定するのでUSBGPS2 Utilityを起動、 COMポートを指定して動作確認する(最初は初期化した方がいいと思う)。初期測位までに5分くらいかかる。
他のポータブルGPS(2台)では速攻なので、このIOのが性能が低いと思われる。
なお、付属のSuperMapple8は問題なく動作する。が、GPS機種設定は「IO-DATA社製GPS」ではなく、「NMEA TOKYO Datum出力タイプ」に設定しなければならない。なお、このGPSはカシミール3Dでは対応されていない。
Unlocker v1.9.1
32ビット版ではシェル拡張でunlockが出てこないので、64ビット版を入れること。
不具合を起こすソフトがあった。うちでわかったものを列記しておく。
すべて元はXP対応の物で、32bitのWindows7では問題なかった物である。
- B's FileGuard/DiskGuard(v1.06)
これが一番やっかいだった。Windowsの起動すら出来なくなる(2つのうちどちらがぶつかっているかまでは未確認)。
対応版も発売されてない。フリーでファイルの暗号化ツールはあるので、それを使うことになる。
「アタッシェケース」がおすすめ。
- IO-DATA USB2-NFC
nanacoやICOCCAカードを読むためのカードリーダー。インストールできない。
当然、これの動作を前提としているアプリは動かすことが出来なくなる。
EdyViewer v2.1(v3.0はこのカードリーダー非対応)とか精算快速とか。
- ROXIO EASY CREATOR7
インストール不可。CD/DVD作成系アプリが動かないのはちょいとつらい。
最新版は出てるけどちょいと高い(1.5万)。
- Core Temp v0.99.8
起動せず。最新版(v1.0 RC3以降)にすることでOK。
あふw x64 v1.53
64bit対応不足と言うより、単にバグな気もする。
→仕様通りだそうですm(_ _)m。
64ビット版ではアーカイブ関係のDLLも64ビット版を入れないと展開できないのかも知れず。
うちでは↓理由によりExplzhは32ビット版なのでLZHが展開できない状態。
ということで、現在は32ビット版を利用中。機能差なしなので問題なし。
別途7-ZIP64/TAR64.DLLを入れろと言ってくるが、指定されたwindows\system32にコピーしても、なぜかsyswow64に入ってしまう。OSが勝手に入れ替えているらしい。回避策が見つけられなかったので、32bit版を入れた。機能差なしなので問題なし。
→エクスプローラーなどによるファイルのコピーではうまくいかず、ファイルをいったんクリップボードにコピーしてペーストするとうまくいくらしい。(情報感謝!)
ウインドウサイズを変更すると、広がった部分が再描画されない。
→治ったみたい。が、三四郎2009は日本語入力システムとしてATOKしか受け付けない問題がある。可能なら、早いうちにLibreOfficeやMS-Officeなどに移行したほうが良い。
マウスカーソルが飛んだり、ホイールスクロールで変にスクロールしたりする。
V1.73にして、これをうまく使う情報がここにあった。
一応不具合は出なくなった模様。
ウインドウを右側広げると描画されない。標準同梱ツールがバグっててどうするよ。→治ったみたい。
画面復帰時にタスクバーが消えてしまう。パスワードをかけていれば大丈夫らしいが、基本的に64bit 7対応とうたっている物以外は使わない方がよさそう。
32ビット 7では問題なかったので、64ビット 7のバグのような気もする。
SHARPのサイトでは未対応と書いてあったが、OEMのサンワサプライの製品では「対応」となっていた。
実際、オンラインでドライバを探すとインストールできた。
e-TAXのソフト自体は64ビットでも動く。
メーカーではWindows7は32bit版も含め一切サポートしていない。
FT232R USB UARTというドライバが×と出る。 このドライバは、その大本のメーカーFTDI社のサポートページから64ビット対応版がダウンロードできる。
executable版を選んだ方が楽だと思ったが、困ったことにこれを実行してもドライバは正常にインストールされない。
仕方ないので、zip版を適当な場所(デスクトップとか)に展開する。デバイスマネージャーからFT232R USB UARTを選択してプロパティ~ドライバーの更新~コンピューターを参照してドライバーソフトウエアを検索します~場所はc:\からで、サブフォルダも検索させる。すると「証明書がない」とか言ってくるが一応見つかるので、インストール。
これでFTR232Rは動くようになるが、まだ「USB Serial Port」が動かないと言ってくる。
もう一度同じようにUSB Serial Portでも検索してインストール。
これで必要なドライバがすべてインストールされ、COMポートも確定するのでUSBGPS2 Utilityを起動、 COMポートを指定して動作確認する(最初は初期化した方がいいと思う)。初期測位までに5分くらいかかる。
他のポータブルGPS(2台)では速攻なので、このIOのが性能が低いと思われる。
なお、付属のSuperMapple8は問題なく動作する。が、GPS機種設定は「IO-DATA社製GPS」ではなく、「NMEA TOKYO Datum出力タイプ」に設定しなければならない。なお、このGPSはカシミール3Dでは対応されていない。
32ビット版ではシェル拡張でunlockが出てこないので、64ビット版を入れること。
登録:
投稿 (Atom)
