72 votes

Android Fatal Signal 11

Dans l'application que je développe sur Android, je reçois une erreur Fatal Signal 11.

Je pense que cela a quelque chose à voir avec la façon dont j'accède à la mémoire, mais je ne peux pas comprendre ce qui la cause.

Toute aide sera très appréciée!

Voici le LogCat:

 05-02 23:47:17.618: D/dalvikvm(590): GC_FOR_ALLOC freed 68K, 4% free 6531K/6787K, paused 101ms
05-02 23:47:17.638: I/dalvikvm-heap(590): Grow heap (frag case) to 7.619MB for 1228816-byte allocation
05-02 23:47:17.738: D/dalvikvm(590): GC_CONCURRENT freed 1K, 4% free 7730K/8007K, paused 5ms+14ms
05-02 23:47:17.878: D/dalvikvm(590): GC_FOR_ALLOC freed <1K, 4% free 7730K/8007K, paused 37ms
05-02 23:47:17.888: I/dalvikvm-heap(590): Grow heap (frag case) to 8.790MB for 1228816-byte allocation
05-02 23:47:17.998: D/dalvikvm(590): GC_CONCURRENT freed <1K, 4% free 8930K/9223K, paused 4ms+4ms
05-02 23:47:17.998: A/libc(590): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
 

25voto

Declan Greally Points 453

J'avais essayé d'appeler un canevas non initialisé dans une autre classe afin que, lorsqu'il essayait d'obtenir la hauteur ou la largeur, il se bloque.

13voto

Martin Points 287

J'ai eu le même problème avec une instance de android.media.MediaRecorder.

Le code auquel on a accédé #getMaxAmplitude () après l'appel de #reset () et #release () sur l'instance MediaRecorder.

8voto

digiholic Points 425

J'ai eu ce même problème ce matin et a été en mesure de retrouver accidentellement l'enregistrement d'une image de 800 pixels de large dans le drawable-mdpi dossier. Quand j'ai réalisé ce qui s'est passé j'ai bricolé avec une seconde. J'ai essayé de le compresser dur pour voir si elle était liée à la taille du fichier et qu'il ne l'était pas. Ensuite, j'ai essayé de l'enregistrer de nouveau à 650 pixels de large et il a travaillé à partir de ce dossier. Donc quelque part entre les deux il ya le point de rupture pour chaque dossier, je suppose. Puis j'ai mis les 800 p à l'échelle de l'image dans le but hdpi et le dossier de 480 p de large dans le mdpi et il a fixé.

5voto

ChrisB Points 221

J'ai eu le même problème et trouvé après une bonne nuit de sommeil et un café le matin que j'avais été assez bête pour l'arrière de la toile avec un non initialisée Bitmap. Il semble que beaucoup, sinon la totalité de la toile dessin code est le code natif et en passant des objets non initialisées n'est pas détecté partout. SIGSEGV avec une adresse nulle (0x00000000) signifie que votre demande a déréférencé un pointeur null, donc regarder dehors pour les endroits où vous passez des pointeurs null (c'est à dire vide de références à des instances d'objet que vous n'avez pas instancié en premier lieu) pour le code qui est soutenu par le code natif et ne pas vérifier correctement pour cette erreur.

4voto

Vikas Choudhary Points 271

J'ai rencontré la même erreur fatale lors de l'utilisation de la classe Canvas.
Mon code ressemble à ça. Le code suivant initialise un arc et le dessine sur la toile.

 private RectF r1 = null;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

public Arc(Context ctx) {
    super(ctx);
    mPaint.setColor(0xFFFF0000);
    r1 = new RectF(200, 200, 400, 400);
}

protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   canvas.drawArc(r1, 0, 90, true, mPaint);
}
 

Le problème est dû au fait que mon instance de RectF n’a pas été initialisée, ce qui a entraîné une exception NullPointerException et l’erreur fatale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X