2011-08-04 6 views
0

[[ASIHTTPRequest alloc] initWithURL:url]を呼び出すとすぐにアプリケーションがクラッシュします。私のiPod Touch 1Gで。 iOS 4.xでは問題ありません。iOS 3.1.3でASIHTTPRequestがクラッシュする

私が見るにエラーがエラードメイン= ASIHTTPRequestErrorDomainコード= 10のUserInfo = 0x368790 "NSRangeException"

であると私は私が実装したクラッシュ管理システムから取得するバックトレースが

backtrace: (
"0 MayasDUp       0x0007f21b -[SWCrashManager backtrace] + 18", 
"1 MayasDUp       0x0007ece1 sighandler + 144", 
"2 libSystem.B.dylib     0x3049e7eb _sigtramp + 26", 
"3 MayasDUp       0x0005128b -[ASIHTTPRequest buildPostBody] + 850" 

です)

投稿変数の設定や接続の開始など、何もせずに[[ASIHTTPRequest alloc] initWithURL:url]呼び出しだけを配置しました。クラッシュはまだ起こります。

私はブレークポイントを設定し、NSLogをASIHTTPRequestに記録しましたが、有用なものはありませんでした。

誰も同様の問題がありましたか?

+0

それはデバッガに貫通して実行し、それがでクラッシュだbuildPostBody内のどのラインを正確に私たちを見ることができますか? – JosephH

+0

buildPostBodyメソッドが完全に実行されました。私はメソッドの最後にNSLog呼び出しとブレークポイントを配置し、実行はそのポイントに正常に達します。 スレッド3でアプリがクラッシュし、詳細情報が表示されるのは0 のノードのみです。 少し遅れてクラッシュが発生し、正しく表示されないようです。 – Dimitrios

+0

NSZombiesを有効にして実行しましたか? – JosephH

答えて

0

おそらく、10秒以上かかるメインスレッド上に何かが実行されている可能性があります。同期httpリクエストを行っていますか?メインスレッドの場合は、

[request startAsynchronous]; 

を使用する必要があります。

+0

私はstartAsynchronousを使用しています。 – Dimitrios

+0

それから、実行には長い時間がかかります。時間の経過を確認するために計測器を実行したり、タイムアウトが発生する前にデバッガで一時停止したり、ロギングを使用したり、コードを投稿したりしてください。 – JosephH

1

多くの掘り出しの後、私は問題が非常に深く、実際にはコンパイラのバグであることがわかりました。つまり、LLVM 2.0を使用し、プロジェクトの[最適化レベル]> [なし]を設定すると、クラッシュの原因となったコンパイル済みファイル(ASIHTTPRequestおよびASIFormDataRequest)が破損し、スタックトレースに実データがありませんでした。

私たちが適用したソリューションは、コンパイラと最適化の設定をそのままにして、問題が発生した2つのASIHttpファイルに対して-O0コンパイラフラグを追加することでした。

他のユーザーからは、XCode 4.0.2がコンパイラの問題を修正したことが報告されています。

興味がある人のために、いくつかの詳細はここにあります:あなたは http://groups.google.com/group/asihttprequest/browse_thread/thread/c598649bfe71643c/8ee09defd12386ba?lnk=gst&q=crashes#8ee09defd12386ba

関連する問題