下の 'CortexA8' 問題は、私のような多くの(非常に多くの)クラッシュレポート受信されています:memsetのiOS5を私が始めている通りを打つので、iOS5を
...
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x0
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_c.dylib 0x35ec4b3c memset$VARIANT$CortexA8 + 116
1 FooApp 0x0005ba25 -[FooViewController prepareShapes] (FooViewController.m:808)
...
を関連する詳細情報:
- XCodeの4.2
- LLVM 3.0
- 'ARMv6以降のARMv7' アーキテクチャ
- のiOS 5のベースSDK
- iOS 4.0をターゲットにする
- iOS5(すべてのiOS5 iPhoneモデル)でクラッシュします。表現(代わりに構造体を渡し、何iPadはクラッシュしませんが、このアプリは
- が直接
memset
を呼び出すことはありません(今[FooViewController prepareShapes]
)もちろん、私の任意のデバイス上にクラッシュを再現することはできません)普遍的ではありませんシェイプ)を再割り当てしようとするクラスメソッドに追加します。スタックトレースがクラスメソッドをスキップするという事実はちょっと変わっていますが、私が理解していないコンパイラの魔法はまだまだです。次のようにクラスメソッド内で、memset
を呼び出すブロックは次のとおりです。
// class method invoked by [FooViewController prepareShapes]:808 (shape is coloured2DShape instance)
shape->maxVertexCount = maxVertexes;
if (shape->maxVertexBytes != 0)
{
free(shape->vertices);
}
shape->maxVertexBytes = sizeof(vertex_2D_4byteColour) * shape->maxVertexCount;
shape->vertices = (vertex_2D_4byteColour *)malloc(shape->maxVertexBytes);
memset(shape->vertices, 0, shape->maxVertexBytes);
そして、ここでは、私は、これはOpenGLを行う際に推奨されるまでどこにも近接していないことを認識
// coloured2DShape struct
typedef struct coloured2DShape
{
vertex_2D_4byteColour* vertices;
GLushort* indices;
uint maxVertexBytes;
uint maxIndexBytes;
int vertexCount;
int indexCount;
int maxVertexCount;
int maxIndexCount;
} coloured2DShape;
を操作される構造体ですしかし、実際に私を卑劣にするものは、memset
はiOS5の下でのみ爆発しているということです(私はQuincyKitを使用してクラッシュレポートを収集し、HockeyAppを集約しています)。この正確なコードは、iOS4(GCCでコンパイルされた)の下で数か月にわたって巡航していました。
「これは私の宿題をする」ものと解釈されないことを願っています。私は数ヶ月の研究、調整(この問題に取り組んでいるいくつかのアップデートをリリースしました)、そして進歩なしに髪を引っ張っています。私はすべてのアイデアがありません。
これは意味があります。最新のアップデートで 'malloc'の失敗のチェックを追加しました。 "memset'エラー"カウントが "malloc' fail"エラーに置き換えられるようになった場合、私はあなたに答えを与えるでしょう(1週間程度で知っておくべきです)。これがiOS5の下でのみポップアップする理由は何ですか? –