問題タブ [win64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
121 参照

perl - 死にかけているPerlテストの実行をprove-vを使用して終了すると、結果がSTDOUTを介してテキストファイルに保存されないのはなぜですか?

SeleniumRCを運転しているのにページがハングするので、Ctrl-Cを押してテストを停止し、問題に対処します。次のようにコマンドラインからtxtファイルを渡す場合:

...テキストファイルに何も表示されないか、「バッチジョブの終了(Y / N)?」が表示されます。コマンドラインを介して出力するファイルを渡さない場合、結果は期待どおりにスクロールすることに注意してください。

-vではないstdoutを介してファイルに書き込むオプションがあることを証明しますか?

$| = 1;この問題は、またはのいずれかにそのフォームのいずれかを追加してもprove.pm解決しませんsome.t。証明またはTest::Harnessに、自動フラッシュ設定を上書きするものがありますか?

私もこのバリエーションを試しました: prove -v some.t > testresults.txt :: data.csv

0 投票する
3 に答える
32973 参照

python - Python 2.7.3 32 ビットと 64 ビットを Windows に並べてインストールする方法

Windows Vista 64 を使用しています。

Python 2.7.3 64 ビットを必要とするプロジェクトと、Python 2.7.3 32 ビットを必要とするプロジェクトがあります (一部の拡張機能は 64 ビットでは機能しないため)。

Python 2.7.3 MSI インストーラー (32 または 64 ボット) が他のバージョンを削除しないようにするにはどうすればよいですか。

Python 2.7.2 では問題なく並列に動作しました。

0 投票する
1 に答える
921 参照

c# - 自動化 / 64 ビット アプリケーションと 32 ビット アプリケーション間の WinAPI 呼び出し

2 つのアプリケーション間に自動化シナリオ (主に MSUIA) があります。ターゲットは 32 ビットで、私のアプリ (自動化するもの) は 64 ビットで、64 ビットの win7 上にあります。共有する必要がある情報の一部には、直接 Win SDK 呼び出し (SendMessage、GetFocus など) を介してアクセスする必要があります。

私の理解では、Win64 と 32 サブシステムは完全に分離されているため、そのような種類の対話はすぐに失敗するはずです (たとえば、64 ビット アプリを介して 32 ビット アプリの一部にアクセスしようとするなど)。奇妙なことに、ほとんどのものは正常に動作するようです。そのため、何らかのマーシャリングが内部的に行われているようです。

ただし、p/invoke 関数を定義する方法に問題があるように見えるいくつかのシナリオに遭遇しました。私は、何かがサイズを変更する可能性があるときはいつでも IntPtr を使用して (また、素晴らしいhttp://www.pinvoke.net/default.aspx/サイトを使用して)、それらを「公式の MS の方法」と宣言しました。 64 ビット (コンパイル スイッチを使用) の場合、DLL の 64 ビット バージョンを使用して 64 ビット用にコンパイルする必要があります。

奇妙なことに、これらの呼び出しを使用して 32 ビット アプリにアクセスすると (たとえば、他のプロセスのメモリから実際に読み取る GetWindowText など)、これらの呼び出しは正常に機能しているように見えます。しかし。後続の MSUIA 呼び出しはランダムに失敗するようです。

64 ビットにコンパイルしているにもかかわらず、p/invoke 呼び出しに対して (誤って) 32 ビット署名を宣言すると、すべて正常に動作します。

私には、これは意味がありません。

最もクリーンな解決策は、おそらくアプリを 32 ビット (またはターゲット アプリと同じ) にコンパイルすることですが、それでも..これについての洞察に感謝します。

0 投票する
3 に答える
2905 参照

delphi - スレッドのシャットダウン中に Win64 Delphi RTL でメモリ リークが発生しますか?

長い間、サーバー アプリケーションの Win64 バージョンでメモリ リークが発生することに気付きました。Win32 バージョンは比較的安定したメモリ フットプリントで正常に動作しますが、64 ビット バージョンで使用されるメモリは定期的に増加します。明らかな理由もなく、おそらく 1 日あたり 20Mb 増加します (言うまでもなく、FastMM4 は両方のメモリ リークを報告しませんでした)。 . ソースコードは32bit版と64bit版で同じです。このアプリケーションは、Indy TIdTCPServer コンポーネントを中心に構築されています。これは、Delphi XE2 で作成された他のクライアントから送信されたコマンドを処理するデータベースに接続された高度にマルチスレッド化されたサーバーです。

私は自分のコードを見直して、64 ビット バージョンで大量のメモリ リークが発生した理由を理解しようと多くの時間を費やしています。DebugDiag や XPerf などのメモリ リークを追跡するように設計された MS ツールを使用することになりました。Delphi 64 ビット RTL には、スレッドが DLL から切り離されるたびに一部のバイトがリークされる根本的な欠陥があるようです。この問題は、再起動せずに 24 時間年中無休で実行する必要がある高度にマルチスレッド化されたアプリケーションにとって特に重要です。

XE2 でビルドされたホスト アプリケーションとライブラリで構成された非常に基本的なプロジェクトで問題を再現しました。DLL は、ホスト アプリと静的にリンクされます。ホスト アプリは、ダミーのエクスポートされたプロシージャを呼び出して終了するスレッドを作成します。

ライブラリのソースコードは次のとおりです。

ホスト アプリケーションはタイマーを使用して、エクスポートされたプロシージャを呼び出すだけのスレッドを作成します。

VMMap を使用したリークを示すスクリーンショットを次に示します (「ヒープ」という名前の赤い線を見てください)。次のスクリーンショットは、30 分間隔で撮影されたものです。

32 ビット バイナリは 16 バイトの増加を示していますが、これは完全に許容範囲です。

32ビット版のメモリ使用量

64 ビット バイナリは、12476 バイト (820K から 13296K へ) の増加を示しており、より問題があります。

64ビット版のメモリ使用量

ヒープ メモリが常に増加していることは、XPerf でも確認されています。

XPerf の使用

DebugDiag を使用すると、リークしたメモリを割り当てていたコード パスを確認できました。

Remy Lebeauは、Embarcadero フォーラムで何が起こっているのかを理解するのを助けてくれました。

2 番目のリークは、明確なバグのように見えます。スレッドのシャットダウン中に、StartLib() が呼び出され、ExitThreadTLS() を呼び出して呼び出しスレッドの TLS メモリ ブロックを解放し、次に Halt0() を呼び出して ExitDll() を呼び出して例外を発生させ、それを DelphiExceptionHandler() がキャッチして AllocateRaiseFrame(これは、間接的に GetTls() を呼び出し、したがって、ExceptionObjectCount という名前の threadvar 変数にアクセスするときに InitThreadTLS() を呼び出します。これにより、まだシャットダウン中の呼び出しスレッドの TLS メモリ ブロックが再割り当てされます。そのため、DLL_THREAD_DETACH 中に StartLib() が Halt0() を呼び出したり、_TExitDllException の発生を検出したときに DelphiExceptionHandler が AllocateRaiseFrame() を呼び出したりしてはなりません。

スレッドのシャットダウンを処理する Win64 の方法に重大な欠陥があることは明らかです。このような動作は、Win64 で 27 時間年中無休で実行する必要があるマルチスレッド サーバー アプリケーションの開発を妨げます。

そう:

  1. 私の結論についてどう思いますか?
  2. この問題の回避策はありますか?

QC レポート 105559

0 投票する
1 に答える
166 参照

c++ - double* を long に格納する (C++)

したがって、ターゲット プラットフォームが 32 ビットの場合、Visual Studio 2005 で完全にコンパイルされるこの既存のコードがあります。ただし、64 ビットでは動作しません。理由がわかりません。実際、ずっと前にポインターがキャストされるのを見たことがありません。それは正しいC ++ですか?

前もって感謝します。

0 投票する
2 に答える
180 参照

c++ - sprintf_s には、win64 と win32 の特定の使用要件がありますか?

次のコード スニペットは、実行中の SW を抽出して簡略化したものです。リバース エンジニアリングを行っています (細かな点を気にせずに問題を強調しようとしました)。

win64 マシンで次のコードをビルドすると、操作中にクラッシュが発生します。

いくつか質問があります:

  1. J++win32 プラットフォームでインデックス ( ) を 2 回インクリメントする必要があるのはなぜですか? - win32 プラットフォームは、double に対して char* ポイントを 2 回「ジャンプ」することをどのように認識していますか?
  2. なぜ sprintf_s は、win32 の oData (コンポジション コンテナー) から正しいフィールドを選択することを知っているのでしょうか? しかし、win64ではクラッシュしますか?

これは、32 ビットと 64 ビットのポインター サイズの違いによるものだと思いますが、動作を説明するためにあなたの助けを求めています。

0 投票する
1 に答える
209 参照

qt - Win64 で QT Jambi アプリケーションを実行する

私は開発中のアプリケーション用に QT Jambi を評価してきましたが、途中で QT Jambi が Win64 での開発時にいくつかの問題に直面することを読みました。ただし、Win64 で開発するつもりはないので、今は関係ありませんが、本当に知りたいのは、QT Jambi を使用して構築されたアプリケーションが Win64 でシームレスに動作するかどうかです。

ありがとう、

0 投票する
1 に答える
2125 参照

windows - x64 呼び出し規約 (スタック) と可変引数

Microsoft のドキュメントを読んだことがありますが、スキームが非常にぎこちないので、正しく理解していることを確認するために再確認しようと思いました...

私の理解では、パラメーターが渡される一般的な方法は次のとおりです。

実装するときはとてもぎこちないva_argようです...これは実際に正しいですか?

0 投票する
1 に答える
2240 参照

java - Windows 7 で OleControlSite をインスタンス化するときに NullPointerException がスローされる

NullPointerExceptionSWT から Excel を開こうとするとエラーが発生します。残念ながら、私が働いている会社への参照が含まれているため、完全なスタック トレースとコードの一部を投稿することはできません。うまくいけば、誰かが以前にこの問題に遭遇し、それを認識するかもしれません.

ここに投稿できるスタックトレースの一部があります

これがコードです。新しい OleControlSite がインスタンス化されると、例外がスローされるのは最後の行です。

このコードは Windows XP では機能しますが、Windows 7 では機能しませんNullPointerException

立方体の提案に従って、ここに自己完結型の例を作成しました。コードは次のとおりです。

そしてここに例外があります


アップデート:

Maven を使用してまったく新しいプロジェクトを作成し、Eclipse SDK 4.2 の依存関係を 1 つ追加しました。これが私の pom ファイルで、依存関係が 1 つしかないことがわかります。プロジェクト内のコードは、上記のクラスと同じです。

OleControlSite クラスのソース コードは 3.8 sdk から 4.2 sdk まで同じであることに気付きました。これにより、問題の原因が SDK のバージョンである可能性は低くなります。


アップデート:

SWT ソース コードをダウンロードすると、OleClientSite の 392 行目のこの行で例外がスローされます。

そして隠れた例外は


更新 09/05 9:35am

favonius の情報のおかげで、さらに多くの情報を見つけることができました。64 ビット Windows OS での 32 ビット com に関するこのディスカッションを見つけました。ここでは、64 ビットでの 32 ビット com について説明します。 http://www.eclipse.org/forums/index.php/mv/msg/264018/763345/ 32 ビット版のみの Office 2007 を 64 ビット OS で実行しているため、これは私の問題かもしれません。レジストリを確認したいのですが、どのキーを調べればよいかわかりません。レジストリキーが何であるか知っている人はいますか?


更新 09/05 9:45am

以下は favonius が提供した TestCode クラスの結果です。

57 行目にコメントを付けて 1 を実行します。

コメントを外して 2 行目 57 を実行


更新 09/05 1:51pm

私たちのアプリは、開くための Excel 用の xls ファイルを出力します。xlsx ファイルを読み込もうとしたところ、動作しました。これは、この特定のアプリの問題を修正するための合理的な変更です。xlsファイルを開くことは想定されていませんか?

0 投票する
1 に答える
1563 参照

matlab - win64からwin32へのpnet通信

pnet tcp / udp toolbox)をpsychtoolboxと一緒に使用して、異なるマシンのmatlabの2つのインスタンス間で通信します。私のマシンの1つは、matlab2010bを実行している32ビットのwin7です。もう1つは、matlab2012aを実行している64ビットのwin7です。あるコンピューターから別のコンピューターにデータを転送する際に問題が発生しました。

実験1:32ビットコンピューターからudp_plotter_demoを実行しながら、64ビットコンピューターからudp_send_demoを実行します。期待される結果:32ビットコンピューターはデータをプロットし、キーボード入力を待ちます。Kb入力の場合は、図を閉じてデモを終了します。64ビットは送信を終了し、デモを停止します。実際の結果:64ビットは正常に動作します。32ビットコンピューターはプロットしますが、ハングしてデモを閉じることを拒否します。キーボード入力に応答しないため、強制的に閉じる必要があります。

実験2:上記の実験を32ビット送信と64ビット読み取りで逆に実行します。期待される結果:64ビットがプロットされ、キーボード入力を待機します。kb入力が見つかった場合は、デモを停止します。実際の結果、64ビットのMATLABがクラッシュし、mexファイルのセグメンテーション違反を主張しています。スタックトレースが表示されます(最後にその一部を追加しています)。

ポート番号をいじってみても違いはありません。プリコンパイルされたmexを使用する代わりに、「pnet.c」ソースファイルを再コンパイルしても違いはありません。 質問:誰かがこのようなことを試みましたか?動作させましたか?Win64コンピューターに32ビットMATLABをインストールせずに、これを機能させるための方法を提案できますか?

============

コード:

サーバ側:

クライアント側:

=============

スタックトレース


2012年9月29日土曜日16:41:11にセグメンテーション違反が検出されました

構成:

クラッシュデコード:無効

デフォルトのエンコーディング:windows-1252

MATLABルート:C:\ Program Files \ MATLAB \ R2012a

MATLABバージョン:7.14.0.739(R2012a)

オペレーティングシステム:Microsoft Windows 7

プロセッサーID:x86ファミリー6モデル58ステッピング9、GenuineIntel

仮想マシン:Java1.6.0_17-b04とSunMicrosystems Inc. Java HotSpot(TM)64ビットサーバーVM混合モード

ウィンドウシステム:バージョン6.1(ビルド7601:Service Pack 1)

障害数:1

異常終了:セグメンテーション違反

レジスタの状態(障害から):RAX = 0000000000000000 RBX = 0000000000000000

RCX = 000000005d0df7d7 RDX = 0000000000000001

RSP = 00000000040671b0 RBP = 0000000004067289

RSI = 000000000000003d RDI = 000000000000003d

R8 = 000000005d0df7d6 R9 = 000050490ee40167

R10 = 000000000000003d R11 = 0000000000000000

R12 = 0000000000000008 R13 = 000007fefb997678

R14 = 0000000000000002 R15 = 0000000000000002

RIP = 000007fefb99238a EFL = 00010202

CS = 0033 FS = 0053 GS = 002b

スタックトレース(障害から):

[0] 0x000007fefb99238a C:\ Users \ ephys-data \ Desktop \ temp \ tcp_udp_ip \ pnet.mexw64 + 00009098(perror + 004298)

[1] 0x000007fefb99389b C:\ Users \ ephys-data \ Desktop \ temp \ tcp_udp_ip \ pnet.mexw64 + 00014491(mexFunction + 001979)

[2] 0x0000000074f10f63 C:\ Program Files \ MATLAB \ R2012a \ bin \ win64 \ libmex.dll + 00069475(mexRunMexFile + 000131)

[3] 0x0000000074f0fce2 C:\ Program Files \ MATLAB \ R2012a \ bin \ win64 \ libmex.dll + 00064738(inSwapMexfileReader + 000226)

[4] 0x0000000074f0fe58 C:\ Program Files \ MATLAB \ R2012a \ bin \ win64 \ libmex.dll + 00065112(inSwapMexfileReader + 000600)

[5] 0x0000000074e4b046 C:\ Program Files \ MATLAB \ R2012a \ bin \ win64 \ m_dispatcher.dll + 00045126(Mfh_file :: dispatch_fh + 000486)

....もっとたくさん...

このエラーは、MEXファイルの実行中に検出されました。MEXファイルが公式のMathWorks関数でない場合は、そのソースコードにエラーがないか調べてください。MEXファイルのデバッグについては、外部インターフェイスガイドを参照してください。

この問題が再現できる場合は、次の方法でサービスリクエストを送信してください。

テクニカルサポートエンジニアが詳細について連絡する場合があります。

ご協力ありがとうございました。


ありがとう

-b