J'ai lu les autres articles sur la recherche des raisons d'obtenir un SIGSEGV
dans une application Android. Je prévois de parcourir mon application pour d'éventuels NullPointers liés à l'utilisation de Canvas, mais mes SIGSEGV
barfs affichent une adresse mémoire différente à chaque fois. De plus, j'ai vu code=1
et code=2
. Si l'adresse mémoire était 0x00000000
, j'aurais une idée qu'il s'agit d'un NullPointer.
Le dernier que j'ai reçu était code=2
:
A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2)
Des suggestions sur la façon de suivre cela?
J'ai un suspect, mais je ne souhaite pas encore l'expérimenter. Mon application utilise l'API OSMDroid pour la cartographie hors ligne. La classe OverlayItem représente des marqueurs / nœuds sur la carte. J'ai un service qui collecte des données via le réseau pour remplir l'OverlayItem qui sont ensuite affichées sur la carte. Dans un effort pour simplifier ma conception, j'ai étendu OverlayItem dans ma propre classe NodeOverlayItem, qui comprend certains attributs supplémentaires que j'utilise dans l'activité d'interface utilisateur et dans le service. Cela m'a donné un point d'information unique pour l'interface utilisateur et le service. J'ai utilisé Intents pour diffuser à l'activité pour actualiser la carte d'interface utilisateur lorsque quelque chose a changé. L'activité se lie au service et il existe une méthode de service pour obtenir la liste des NodeOverlayItem. Je pense que cela pourrait être l'utilisation de OverlayItem par l'API OSMDroid, et mon service de mise à jour des informations de nœud en même temps. (un problème de concurrence)
Au moment où j'écris ceci, je pense que c'est vraiment le problème. Le mal de tête ne sépare pas le nœud et OverlayItem de NodeOverlayItem, c'est que l'activité aura besoin de certaines données du nœud, que le service détient. De plus, lorsque l'activité est créée (onResume, etc ...), les objets OverlayItem devront être recréés à partir des données de nœud que le service a conservées pendant que l'activité était absente. Par exemple, vous démarrez l'application, le service collecte des données, l'interface utilisateur l'affiche, vous allez à l'accueil, puis de nouveau à l'application, l'activité devra extraire et recréer les OverlayItem à partir des dernières données de nœud de service.
Je sais que ce n'est pas une grande ou claire question. C'est comme si toutes mes questions de SO étaient niches ou obscures. Si quelqu'un a une suggestion sur la façon d'interpréter ces SIGSEGV
erreurs, ce serait grandement apprécié!
MISE À JOUR Voici le dernier crash capturé lors d'une session de débogage. J'ai 3 de ces appareils utilisés pour les tests et ils ne se bloquent pas tous de manière fiable lorsque je développe et teste. J'ai inclus un peu plus pour que la journalisation du GC puisse être notée. Vous pouvez voir que le problème n'est probablement pas lié à l'épuisement de la mémoire.
03-03 02:02:38.328: I/CommService(7477): Received packet from: 192.168.1.102
03-03 02:02:38.328: I/CommService(7477): Already processed this packet. It's a re-broadcast from another node, or from myself. It's not a repeat broadcast though.
03-03 02:02:38.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:38.460: D/CommService(7477): Monitoring nodes...
03-03 02:02:38.515: D/dalvikvm(7477): GC_CONCURRENT freed 2050K, 16% free 17151K/20359K, paused 3ms+6ms
03-03 02:02:38.515: I/CommService(7477): Received packet from: 192.168.1.102
03-03 02:02:38.515: D/CommService(7477): Forwarding packet (4f68802cf10684a83ac4936ebb3c934d) along to other nodes.
03-03 02:02:38.609: I/CommService(7477): Received packet from: 192.168.1.100
03-03 02:02:38.609: D/CommService(7477): Forwarding packet (e4bc81e91ec92d06f83e03068f52ab4) along to other nodes.
03-03 02:02:38.609: D/CommService(7477): Already processed this packet: 4204a5b27745ffe5e4f8458e227044bf
03-03 02:02:38.609: A/libc(7477): Fatal signal 11 (SIGSEGV) at 0x68f52abc (code=1)
03-03 02:02:38.914: I/DEBUG(4008): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-03 02:02:38.914: I/DEBUG(4008): Build fingerprint: 'Lenovo/IdeaTab_A1107/A1107:4.0.4/MR1/eng.user.20120719.150703:user/release-keys'
03-03 02:02:38.914: I/DEBUG(4008): pid: 7477, tid: 7712 >>> com.test.testm <<<
03-03 02:02:38.914: I/DEBUG(4008): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 68f52abc
03-03 02:02:38.914: I/DEBUG(4008): r0 68f52ab4 r1 412ef268 r2 4d9c3bf4 r3 412ef268
03-03 02:02:38.914: I/DEBUG(4008): r4 001ad8f8 r5 4d9c3bf4 r6 412ef268 r7 4c479df8
03-03 02:02:38.914: I/DEBUG(4008): r8 4d9c3c0c r9 4c479dec 10 46cf260a fp 4d9c3c24
03-03 02:02:38.914: I/DEBUG(4008): ip 40262a04 sp 4d9c3bc8 lr 402d01dd pc 402d0182 cpsr 00000030
03-03 02:02:38.914: I/DEBUG(4008): d0 00000001000c0102 d1 3a22364574614c7d
03-03 02:02:38.914: I/DEBUG(4008): d2 403fc0000000007d d3 363737343433350a
03-03 02:02:38.914: I/DEBUG(4008): d4 49544341223a2273 d5 6f6567222c224556
03-03 02:02:38.914: I/DEBUG(4008): d6 3a223645676e6f4c d7 000000013835372d
03-03 02:02:38.914: I/DEBUG(4008): d8 0000000000000000 d9 4040000000000000
03-03 02:02:38.914: I/DEBUG(4008): d10 0000000000000000 d11 4040000000000000
03-03 02:02:38.914: I/DEBUG(4008): d12 4040000000000000 d13 0000000000000021
03-03 02:02:38.914: I/DEBUG(4008): d14 0000000000000000 d15 0000000000000000
03-03 02:02:38.914: I/DEBUG(4008): d16 3fe62e42fefa39ef d17 3ff0000000000000
03-03 02:02:38.914: I/DEBUG(4008): d18 3fe62e42fee00000 d19 0000000000000000
03-03 02:02:38.914: I/DEBUG(4008): d20 0000000000000000 d21 3ff0000000000000
03-03 02:02:38.914: I/DEBUG(4008): d22 4028000000000000 d23 3ff0000000000000
03-03 02:02:38.914: I/DEBUG(4008): d24 0000000000000000 d25 3ff0000000000000
03-03 02:02:38.914: I/DEBUG(4008): d26 0000000000000000 d27 c028000000000000
03-03 02:02:38.914: I/DEBUG(4008): d28 0000000000000000 d29 3ff0000000000000
03-03 02:02:38.914: I/DEBUG(4008): d30 3ff0000000000000 d31 3fecccccb5c28f6e
03-03 02:02:38.914: I/DEBUG(4008): scr 60000013
03-03 02:02:39.046: I/DEBUG(4008): #00 pc 0006b182 /system/lib/libcrypto.so (EVP_DigestFinal_ex)
03-03 02:02:39.046: I/DEBUG(4008): #01 pc 0006b1d8 /system/lib/libcrypto.so (EVP_DigestFinal)
03-03 02:02:39.054: I/DEBUG(4008): #02 pc 0001f814 /system/lib/libnativehelper.so
03-03 02:02:39.054: I/DEBUG(4008): #03 pc 0001ec30 /system/lib/libdvm.so (dvmPlatformInvoke)
03-03 02:02:39.054: I/DEBUG(4008): #04 pc 00058c70 /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
03-03 02:02:39.054: I/DEBUG(4008): code around pc:
03-03 02:02:39.054: I/DEBUG(4008): 402d0160 0003151e 4604b570 f7ff460d 4620ff81 ....p..F.F.... F
03-03 02:02:39.054: I/DEBUG(4008): 402d0170 f7ff4629 bd70ff93 4604b570 460e6800 )F....p.p..F.h.F
03-03 02:02:39.054: I/DEBUG(4008): 402d0180 68834615 dd062b40 21fa4810 44784a10 .F.h@+...H.!.JxD
03-03 02:02:39.054: I/DEBUG(4008): 402d0190 f7c8447a 6821f80f 698a4620 47904631 zD....!h F.i1F.G
03-03 02:02:39.054: I/DEBUG(4008): 402d01a0 b1154606 68836820 6822602b b12b6a13 .F.. h.h+`"h.j+.
03-03 02:02:39.054: I/DEBUG(4008): code around lr:
03-03 02:02:39.054: I/DEBUG(4008): 402d01bc 68e06821 21006c4a ea0af7c4 bd704630 !h.hJl.!....0Fp.
03-03 02:02:39.054: I/DEBUG(4008): 402d01cc 00031492 000314b5 4604b570 ffcef7ff ........p..F....
03-03 02:02:39.054: I/DEBUG(4008): 402d01dc 46204605 ff12f7ff bd704628 4604b573 .F F....(Fp.s..F
03-03 02:02:39.054: I/DEBUG(4008): 402d01ec 2102460d fb36f002 42ab6823 b123d020 .F.!..6.#h.B .#.
03-03 02:02:39.054: I/DEBUG(4008): 402d01fc b1136c5b f7c868e0 68a0fccf 05c26025 [l...h.....h%`..
03-03 02:02:39.054: I/DEBUG(4008): memory map around addr 68f52abc:
03-03 02:02:39.054: I/DEBUG(4008): 4d8c5000-4d9c4000
03-03 02:02:39.054: I/DEBUG(4008): (no map for address)
03-03 02:02:39.054: I/DEBUG(4008): b0001000-b0009000 /system/bin/linker
03-03 02:02:39.054: I/DEBUG(4008): stack:
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b88 408d1f90 /system/lib/libdvm.so
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b8c 412ef258 /dev/ashmem/dalvik-heap (deleted)
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b90 00000001
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b94 408d6c58 /system/lib/libdvm.so
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b98 408d6fa8 /system/lib/libdvm.so
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3b9c 4c479dec
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3ba0 46cf260a /system/framework/core.odex
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3ba4 408735e7 /system/lib/libdvm.so
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3ba8 412ef258 /dev/ashmem/dalvik-heap (deleted)
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bac 002bf070 [heap]
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bb0 412ef258 /dev/ashmem/dalvik-heap (deleted)
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bb4 00000000
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bb8 412ef268 /dev/ashmem/dalvik-heap (deleted)
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bbc 00000000
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bc0 df0027ad
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bc4 00000000
03-03 02:02:39.054: I/DEBUG(4008): #00 4d9c3bc8 001ad8f8 [heap]
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bcc 002ae0b8 [heap]
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bd0 00000004
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bd4 402d01dd /system/lib/libcrypto.so
03-03 02:02:39.054: I/DEBUG(4008): #01 4d9c3bd8 001ad8f8 [heap]
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3bdc 002ae0b8 [heap]
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3be0 00000004
03-03 02:02:39.054: I/DEBUG(4008): 4d9c3be4 4024e817 /system/lib/libnativehelper.so
03-03 02:02:39.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:39.500: D/CommService(7477): Monitoring nodes...
03-03 02:02:39.500: D/dalvikvm(7477): GC_FOR_ALLOC freed 2073K, 16% free 17118K/20359K, paused 51ms
03-03 02:02:39.632: D/dalvikvm(7477): GC_CONCURRENT freed 1998K, 16% free 17162K/20359K, paused 2ms+4ms
03-03 02:02:40.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:40.445: D/CommService(7477): Monitoring nodes...
03-03 02:02:40.562: D/dalvikvm(7477): GC_CONCURRENT freed 2045K, 16% free 17158K/20359K, paused 3ms+4ms
03-03 02:02:41.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:41.445: D/CommService(7477): Monitoring nodes...
03-03 02:02:41.531: D/dalvikvm(7477): GC_CONCURRENT freed 2045K, 16% free 17154K/20359K, paused 3ms+12ms
03-03 02:02:42.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:42.445: D/CommService(7477): Monitoring nodes...
03-03 02:02:42.507: D/dalvikvm(7477): GC_CONCURRENT freed 2068K, 16% free 17128K/20359K, paused 3ms+4ms
03-03 02:02:42.679: D/dalvikvm(7477): GC_CONCURRENT freed 2006K, 16% free 17161K/20359K, paused 2ms+12ms
03-03 02:02:43.140: I/BootReceiver(1236): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
03-03 02:02:43.210: D/dalvikvm(1236): GC_FOR_ALLOC freed 912K, 17% free 10207K/12295K, paused 62ms
03-03 02:02:43.265: D/dalvikvm(1236): GC_FOR_ALLOC freed 243K, 16% free 10374K/12295K, paused 49ms
03-03 02:02:43.265: I/dalvikvm-heap(1236): Grow heap (frag case) to 10.507MB for 196628-byte allocation
Java.Lang.Object
. Trié mes crashsRéponses:
Tout d'abord, obtenez votre trace de pile tombstone, elle sera imprimée chaque fois que votre application se bloque. Quelque chose comme ça:
Ensuite, utilisez l'
addr2line
utilitaire (recherchez-le dans votre chaîne d'outils NDK) pour trouver la fonction qui se bloque. Dans cet exemple, vous faitesEt vous verrez d'où vous venez le problème. Bien sûr, cela ne vous aidera pas car il est en libc.
Vous pouvez donc combiner les utilitaires de
arm-eabi-objdump
pour trouver la cible finale.Croyez-moi, c'est une tâche difficile.
Juste pour une mise à jour. Je pense que je faisais la construction native d'Android à partir de l'arborescence source entière depuis assez longtemps, jusqu'à aujourd'hui, j'ai moi-même lu attentivement les documents NDK. Depuis la sortie de NDK-r6, il a fourni un utilitaire appelé
ndk-stack
.Voici le contenu des documents officiels du NDK avec la balle de goudron NDK-r9.
Aperçu:
ndk-stack
est un outil simple qui vous permet de filtrer les traces de pile telles qu'elles apparaissent dans la sortie de 'adb logcat' et de remplacer n'importe quelle adresse à l'intérieur d'une bibliothèque partagée par les valeurs: correspondantes.En un mot, cela se traduira par quelque chose comme:
Dans la sortie la plus lisible:
Usage:
Pour ce faire, vous aurez d'abord besoin d'un répertoire contenant des versions symboliques des bibliothèques partagées de votre application. Si vous utilisez le système de construction NDK (c.-à-d.
ndk-build
), Ceux-ci sont toujours situés sous $ PROJECT_PATH / obj / local /, où correspond à l'ABI de votre appareil (c.-armeabi
à- d. Par défaut).Vous pouvez alimenter le
logcat
texte en entrée directe dans le programme, par exemple:Ou vous pouvez utiliser l'option -dump pour spécifier le logcat comme fichier d'entrée, par exemple:
IMPORTANT:
L'outil recherche la ligne initiale contenant les départs dans la
logcat
sortie, c'est-à-dire quelque chose qui ressemble à:Lorsque vous copiez / collez des traces, n'oubliez pas cette ligne des traces, ou
ndk-stack
cela ne fonctionnera pas correctement.FAIRE:
Une future version de
ndk-stack
va essayer de se lanceradb logcat
et de sélectionner automatiquement le chemin de la bibliothèque. Pour l'instant, vous devrez effectuer ces étapes manuellement.Pour l'instant,
ndk-stack
ne gère pas les bibliothèques qui ne contiennent pas d'informations de débogage. Il peut être utile d'essayer de détecter le point d'entrée de fonction le plus proche d'une adresse PC donnée (par exemple, comme dans l'exemple libc.so ci-dessus).la source
printf
. Puis-je voir la sortie de cela àprintf
partir des bibliothèques natives.D'ACCORD! Je suis vraiment désolé pour ceux qui ont soumis des commentaires et des réponses, mais j'ai trouvé le problème. Je ne pense pas que cela aidera beaucoup d'autres à essayer de retrouver leur SIGSEGV personnel, mais le mien (et c'était très difficile) était entièrement lié à cela:
https://code.google.com/p/android/issues/detail?id=8709
Le libcrypto.so dans mon vidage m'a un peu renseigné. Je fais un hachage MD5 des données de paquet en essayant de déterminer si j'ai déjà vu le paquet et en le sautant si je l'avais. J'ai pensé à un moment donné qu'il s'agissait d'un vilain problème de thread lié au suivi de ces hachages, mais il s'est avéré que c'était la classe java.security.MessageDigest! Ce n'est pas sûr pour les threads!
Je l'ai échangé avec un UID que je remplissais dans chaque paquet en fonction de l'UUID de l'appareil et d'un horodatage. Aucun problème depuis.
Je suppose que la leçon que je peux donner à ceux qui étaient dans ma situation est, même si vous êtes une application 100% Java, faites attention à la bibliothèque native et au symbole noté dans le vidage sur incident pour les indices. Googler pour SIGSEGV + le nom lib .so ira beaucoup plus loin que le code inutile = 1, etc ... Réfléchissez ensuite à l'endroit où votre application Java pourrait toucher le code natif, même si vous ne faites rien. J'ai fait l'erreur de supposer qu'il s'agissait d'un problème de threading Service + UI où le canevas dessinait quelque chose de nul (le cas le plus courant que j'ai recherché sur SIGSEGV) et ignoré la possibilité qu'il puisse être complètement lié au code que j'ai écrit qui était lié à la lib .so dans le vidage sur incident. Naturellement, java.security utiliserait un composant natif dans libcrypto.so pour la vitesse, donc une fois que j'ai compris, j'ai cherché sur Android + SIGSEGV + libcrypto. donc et a trouvé le problème documenté. Bonne chance!
la source
J'obtenais cette erreur en enregistrant un objet dans les préférences partagées en tant que chaîne convertie gson. La chaîne gson n'était pas bonne, donc la récupération et la désérialisation de l'objet ne fonctionnaient pas correctement. Cela signifiait que tout accès ultérieur à l'objet entraînait cette erreur. Effrayant :)
la source
android.Location
objetSharedPreferences
dans un fichierWakefulBroadcastReceiver
. La plupart du temps ça marche mais parfois j'obtiens leSIGSEGV
crash redouté . Pouvez-vous s'il vous plaît partager comment vous l'avez résolu?J'ai également eu cette erreur plusieurs fois et je l'ai résolue. Cette erreur sera rencontrée en cas de gestion de la mémoire en natif.
Votre application accède à la mémoire en dehors de son espace d'adressage. Il s'agit très probablement d'un accès de pointeur non valide. SIGSEGV = défaut de segmentation dans le code natif. Comme il ne se produit pas dans le code Java, vous ne verrez pas de trace de pile avec des détails. Cependant, vous pouvez toujours voir des informations de trace de pile dans le logcat si vous regardez un peu après le blocage du processus d'application. Il ne vous indiquera pas le numéro de ligne dans le fichier, mais vous indiquera quels fichiers objets et adresses étaient utilisés dans la chaîne d'appel. De là, vous pouvez souvent déterminer quelle zone du code est problématique. Vous pouvez également configurer une connexion native gdb au processus cible et l'attraper dans le débogueur.
la source
Aujourd'hui, j'ai fait face à un
Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 18161
problème et je lutte une demi-journée pour le résoudre.J'ai essayé beaucoup de choses en effaçant le cache et en supprimant le fichier .gradle et tout.
Enfin, je
disable Instant Run
ne reçois plus ce problème maintenant. Maintenant, mon application fonctionne également après avoir activé l'exécution instantanée. Cela peut être le problème de l'exécution instantanée, essayez de désactiver et d'activer l'exécution instantanéeDe cette réponse:
la source
Essayez de désactiver l'accélération matérielle Android dans votre manifeste.
la source
J'ai rencontré cette erreur lorsque j'ai essayé d'accéder au «canevas» en dehors de
onDraw()
Une très mauvaise pratique: /
la source
J'obtenais cette erreur lors de l'utilisation d'un bitmap comme celui-ci:
Ce qui a résolu le problème pour moi, c'était de réduire la taille du bitmap (> 1000 pixels de haut à 700 pixels).
la source
BitmapOptions.inSampleSize
J'ai rencontré SIGSEGV sur Android 4.4.4 (Nexuses, Samsung) Et il s'est avéré qu'une erreur fatale était en analysant en
null
String
utilisantDecimalFormat
Sur Android> 21, il a été géré avec succès avec try / catch
la source
J'ai rencontré ce problème il y a un instant, après avoir migré de
android.support
versandroidx
.Le problème était
renderscript
.Solution: j'ai supprimé de mes
build.gradle
deux lignes:après l'échec de la construction du projet, en raison de références non résolues:
donc je les ai changés en:
Après cela, tous les problèmes ont disparu.
la source
Si vous utilisez la bibliothèque Vitamio et que cette erreur fatale se produit.
Assurez-vous ensuite que dans votre projet gradle, targetSdkVersion doit être inférieur à 23.
Merci.
la source
Dans mon cas (j'utilise Xamarin Forms), cette erreur a été générée en raison d'une erreur de liaison - par exemple:
Fondamentalement, j'ai supprimé la propriété du modèle de vue par erreur. Pour les développeurs Xamarin, si vous avez le même problème, vérifiez vos liaisons ...
la source
Si vous aviez ajouté du code C natif dans votre projet, cette réponse pourrait être utile.
J'avais ajouté du code C natif dans un projet Android.
Maintenant, j'essayais d'accéder à ce code qui me renvoyait une chaîne native, avant de traiter la chaîne, j'avais défini sa valeur par défaut comme nullptr. Maintenant, lors de la récupération de sa valeur dans le code java, ce problème est survenu.
Comme notre code C natif est sorti du répertoire java, nous n'avons donc aucune idée de la ligne de code exacte qui crée le problème. Je vous suggère donc de vérifier votre fichier .cpp et d'essayer d'y trouver des indices.
J'espère que vous vous débarrasserez bientôt du problème. :)
la source
Dans mon cas, le problème était dû à Android Profiler. Dans Android Studio, cliquez sur "Android Profiler" et "fin de session".
Ironiquement, cela causait également des problèmes de performances extrêmes dans l'application.
la source
Ajoutez ces deux lignes à votre build.gradle dans la section Android:
la source
Vérifiez votre code JNI / natif. Une de mes références était nulle, mais elle était intermittente, donc ce n'était pas très évident.
la source
vérifiez vos fonctions natives, qu'elles retournent correctement ou non, si elles ne sont pas retournées, veuillez ajouter des instructions de retour.
la source
Pour moi, ce problème était dû à un mauvais casting entre deux activités. J'ai récemment déplacé cette méthode de Activity1 vers une autre 2. Ce faisant, le refactor a laissé cette distribution explicite telle qu'elle était auparavant. Donc au lieu de faire
Je devais faire
Remarque: Mais cette erreur ne s'est pas produite sur Android 8.0, je ne sais pas encore pourquoi.
*** J'espère que ça aide.
la source
J'ai eu cette erreur de segmentation en raison de problèmes de mémoire . Ma structure ayant de nombreuses variables et tableaux, avait ce tableau de taille 1024.
PS: Il s'agit d'une solution de contournement et non d'une solution. Il est nécessaire de trouver la taille de la structure et l'allocation dynamique de la mémoire est une meilleure option.
la source
J'ai eu cette erreur lorsque j'ai utilisé ViewTreeObserver dans la
onDraw()
fonction.la source
J'ai eu ce problème avec un package qui a été ajouté à mon application (FancyShowCaseView) et j'ai provoqué ce problème sur pré-lolipop. ce paquet a été écrit en kotlin et mes principaux codes ont été écrits en java. alors maintenant je vérifie la version dans pré-lolipop et ne laisse pas sa classe être exécutée. temporaire résolu le problème. vérifiez ceci si vous avez un problème similaire comme moi
la source
2 téléphones sur 12 ont renvoyé une erreur, ont trouvé le problème dans onDrawFrame (), certains objets étaient nuls, je ne sais pas pourquoi, je viens de définir
if(gears==null) return;
.la source
J'ai eu le problème lorsque je créais un PDF à l'aide des API PDF d'Android et j'ai accidentellement utilisé canvas.save () et canvas.restore () après avoir fermé une page pdf.
la source