崩溃:线程SIGBUS 0x0000000054f1f000

时间:2018-01-08 09:27:55

标签: android android-ndk

我的用户每天收到此错误1k次。我不知道从哪里开始。我已经检查了大约20页谷歌与此相关的任何内容以及有关stackoverflow的所有问题,没有人帮助过我。

我在我的应用中没有使用NDK。

这些崩溃发生在所有设备和所有Android版本上。

这是我从Crashylitics获得的痕迹:

        Crashed: Thread
    0  libc.so                        0x400af440 (Missing)
    1  (Missing)                      0x43d61d16 (Missing)
    2  (Missing)                      0x54f1affe (Missing)
    3  libandroid_runtime.so          0x40207325 (Missing)
    4  (Missing)                      0x42c8dbff (Missing)
    5  (Missing)                      0x54f1affe (Missing)
    6  (Missing)                      0x4cb2154e (Missing)
    7  libdvm.so                      0x41799b0e (Missing)
    8  (Missing)                      0x420397e6 (Missing)
    9  (Missing)                      0x43199276 (Missing)
    10 libdvm.so                      0x417caf4b (Missing)
    11 (Missing)                      0x4e5cdd19 (Missing)
    12 libandroid_runtime.so          0x402072ed (Missing)
    13 (Missing)                      0x4cdfe0b6 (Missing)
    14 libdvm.so                      0x417de65d (Missing)
    15 (Missing)                      0x41d7f41a (Missing)
    16 (Missing)                      0x43199276 (Missing)
    17 (Missing)                      0x42c8dc96 (Missing)
    18 (Missing)                      0x42c8dc96 (Missing)
    19 libdvm.so                      0x417f8a99 (Missing)
    20 (Missing)                      0x420127b6 (Missing)
    21 (Missing)                      0x42c8dc96 (Missing)
    22 libdvm.so                      0x417a60da (Missing)
    23 (Missing)                      0x43199276 (Missing)
    24 (Missing)                      0x4e1ef73e (Missing)
    25 (Missing)                      0x420397e6 (Missing)
    26 libdvm.so                      0x41799c7e (Missing)
    27 (Missing)                      0x43199276 (Missing)
    28 libdvm.so                      0x417a2eea (Missing)
    29 (Missing)                      0x43199276 (Missing)
    30 libdvm.so                      0x417aa4f2 (Missing)
    31 libdvm.so                      0x417aa4a2 (Missing)
    32 libdvm.so                      0x417a79d6 (Missing)
    33 (Missing)                      0x4cabeeae (Missing)
    34 (Missing)                      0x4dcb376e (Missing)
    35 libdvm.so                      0x417de657 (Missing)
    36 libc.so                        0x400e0032 (Missing)
    37 libdvm.so                      0x417d2b73 (Missing)
    38 libdvm.so                      0x417ee4d3 (Missing)
    39 libdvm.so                      0x4181a08a (Missing)
    40 (Missing)                      0x4cabeeae (Missing)
    41 libdvm.so                      0x417de67b (Missing)
    42 libdvm.so                      0x4181a08a (Missing)
    43 (Missing)                      0x4cabeeae (Missing)
    44 libdvm.so                      0x417d2c53 (Missing)
    45 libdvm.so                      0x417d2b73 (Missing)
    46 libdvm.so                      0x417d2b73 (Missing)
    47 libc.so                        0x400965b2 (Missing)
    48 libc.so                        0x400ae94c (Missing)
    49 libbinder.so                   0x4017facd (Missing)
    50 libbinder.so                   0x4017b90f (Missing)
    51 libc.so                        0x4009dfee (Missing)
    52 libc.so                        0x4009717a (Missing)
    53 libbinder.so                   0x401823f5 (Missing)
    54 libbinder.so                   0x40182461 (Missing)
    55 libbinder.so                   0x4017b771 (Missing)
    56 libgui.so                      0x4030bde9 (Missing)
    57 (Missing)                      0x4200ffff (Missing)
    58 libutils.so                    0x4012b813 (Missing)
    59 libandroid_runtime.so          0x401fb9c7 (Missing)
    60 (Missing)                      0x4cb1d75e (Missing)
    61 libdvm.so                      0x41799b0e (Missing)
    62 (Missing)                      0x4203610e (Missing)
    63 libdvm.so                      0x417caf4b (Missing)
    64 (Missing)                      0x4e5cd841 (Missing)
    65 libandroid_runtime.so          0x401fb9e1 (Missing)
    66 (Missing)                      0x4cb25316 (Missing)
    67 libdvm.so                      0x417de65d (Missing)
    68 (Missing)                      0x4e974c1e (Missing)
    69 (Missing)                      0x42b96456 (Missing)
    70 (Missing)                      0x4265745a (Missing)
    71 (Missing)                      0x42657456 (Missing)
    72 libdvm.so                      0x417d047b (Missing)
    73 (Missing)                      0x4e336b84 (Missing)
    74 (Missing)                      0x4203610e (Missing)
    75 libdvm.so                      0x41799c7e (Missing)
    76 libdvm.so                      0x417a2eea (Missing)
    77 libdvm.so                      0x417aa4f2 (Missing)
    78 libdvm.so                      0x417aa4a2 (Missing)
    79 libdvm.so                      0x417a79d6 (Missing)
    80 (Missing)                      0x42029446 (Missing)
    81 (Missing)                      0x4ea60b86 (Missing)
    82 (Missing)                      0x4cac55e6 (Missing)
    83 (Missing)                      0x41d67ffe (Missing)
    84 (Missing)                      0x426568a6 (Missing)
    85 (Missing)                      0x4cb96676 (Missing)
    86 (Missing)                      0x4265693a (Missing)
    87 (Missing)                      0x42656862 (Missing)
    88 libdvm.so                      0x417de993 (Missing)
    89 (Missing)                      0x4200e2a6 (Missing)
    90 (Missing)                      0x42656926 (Missing)
    91 (Missing)                      0x42656926 (Missing)
    92 libdvm.so                      0x417f8a99 (Missing)
    93 (Missing)                      0x4200ee8e (Missing)
    94 (Missing)                      0x42656926 (Missing)
    95 libdvm.so                      0x417a60da (Missing)
    96 (Missing)                      0x426568a6 (Missing)
    97 (Missing)                      0x42074fa6 (Missing)

UPD:这是我的应用程序gradle:

    buildscript {
        repositories {
            maven { url 'https://maven.fabric.io/public' }
        }

        dependencies {
            classpath 'io.fabric.tools:gradle:1.+'
        }
    }
    //noinspection GradleCompatible
    apply plugin: 'com.android.application'
    apply plugin: 'io.fabric'

    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    apply plugin: 'io.fabric'

    android {
        dexOptions {
            javaMaxHeapSize "4g"
        }
        signingConfigs {
        }
        compileSdkVersion 25
        buildToolsVersion '25.0.2'
        defaultConfig {
            multiDexEnabled true
            minSdkVersion 15
            targetSdkVersion 25
        }
        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            debug {
                ext.enableCrashlytics = false
            }
        }

        productFlavors {
            normal {
                applicationId "xxx"
                versionCode 1
                versionName "1"
            }
        }

        packagingOptions {
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/MANIFEST.MF'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/license'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/notice'
        }
    }

    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        compile "org.jetbrains.anko:anko-common:$anko_version"
        compile group: 'com.pubnub', name: 'pubnub-gson', version: '4.14.0'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.0'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.0'

        //    compile 'com.google.android.gms:play-services-analytics:10.0.0'
    //    compile 'com.google.android.gms:play-services-gcm:10.0.0

    //    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    //    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

        compile('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
            transitive = true;
        }
        compile('com.crashlytics.sdk.android:crashlytics-ndk:2.0.1@aar') {
            transitive = true;
        }

        compile 'com.parse.bolts:bolts-tasks:1.4.0'
        compile 'com.parse:parse-android:1.16.3'
        compile 'com.appsflyer:af-android-sdk:4.8.5'
        compile 'com.android.installreferrer:installreferrer:1.0'
        compile 'com.flurry.android:analytics:6.4.2'
        compile 'com.android.support:multidex:1.0.1'
        compile 'com.android.support:preference-v7:25.3.1'
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile 'com.android.support:design:25.3.1'
        compile 'com.github.chrisbanes:PhotoView:1.2.6'
        compile 'com.theartofdev.edmodo:android-image-cropper:2.4.7'
        compile 'com.google.code.gson:gson:2.8.1'
        compile 'com.vdurmont:emoji-java:3.3.0'
        compile 'com.scottyab:aescrypt:0.0.1'
        compile 'io.branch.sdk.android:library:1.14.5'
        compile 'com.google.android.gms:play-services-analytics:11.0.4'
        compile 'com.google.android.gms:play-services-gcm:11.0.4'
        compile 'com.otaliastudios:cameraview:1.4.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'
    }

    apply plugin: 'com.google.gms.google-services'

    crashlytics {
        enableNdk true
    }

2 个答案:

答案 0 :(得分:1)

无法访问源代码我无法确定,但在AOSP中,我们几乎总是看到这些错误是由于未定义行为的转换(在form_editing中描述)。

某些ARM指令在未对齐的负载上会出错。这些指令也比可用于未对齐负载的指令更快。如果编译器认为负载将对齐,则会生成更快的代码。如果负载 实际上没有对齐,那么你将会遇到你在这里看到的错误。

跟踪这些可能很棘手,但通常问题是我链接的另一个问题所示:某个地方有一个字符缓冲区被转换为其他更严格对齐的数据类型。您应该能够根据崩溃转储找到它。

答案 1 :(得分:0)

我发现了这个问题。我通过检查这些崩溃出现的版本以及我在该版本中添加的内容来跟踪它。找不到跟踪此类问题的其他方法。

问题是我使用了一种奇怪的方法来避免OutOfMemory异常,它试图在某些条件下使用SD卡作为ram。我想在没有外部SD卡的设备上这是一个问题。