代码之家  ›  专栏  ›  技术社区  ›  Om Infowave Developers

应用程序因本机代码崩溃

  •  7
  • Om Infowave Developers  · 技术社区  · 7 年前
    Crashed: .onlineradioapp|
    0  gralloc.rk30board.so           0xb4a2d616 bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    1  gralloc.rk30board.so           0xb4a315c9 (Missing)
    2  gralloc.rk30board.so           0xb48e2465 art::JValue art::interpreter::ExecuteGotoImpl<true, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    3  gralloc.rk30board.so           0xb4a1349d artInterpreterToInterpreterBridge
    4  gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    5  gralloc.rk30board.so           0xb48f2fef art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    6  gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    7  gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    8  gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    9  gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    10 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    11 gralloc.rk30board.so           0xb4a30de9 (Missing)
    12 gralloc.rk30board.so           0xb48f308b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    13 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    14 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    15 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    16 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    17 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    18 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    19 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    20 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    21 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    22 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    23 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    24 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    25 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    26 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    27 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    28 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    29 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    30 gralloc.rk30board.so           0xb48f2c1b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    31 gralloc.rk30board.so           0xb4a133dd artInterpreterToInterpreterBridge
    32 gralloc.rk30board.so           0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)
    33 gralloc.rk30board.so           0xb4a30de9 (Missing)
    34 gralloc.rk30board.so           0xb48f308b art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue)
    35 gralloc.rk30board.so           0xb4a131b5 art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*)
    36 gralloc.rk30board.so           0xb4c1973b artQuickToInterpreterBridge
    37 gralloc.rk30board.so           0xb491d003 (Missing)
    38 boot.oat                       0x73b4e2bb (Missing)
    

    我已经看到了许多事故报告 Fabric 有了上面的日志,有没有办法理解它并找到解决方案?我已经在许多设备上进行了测试,但我无法生成上述日志。上有大约300份碰撞报告 Fabric console 7天内。我刚刚启用 CrashlyticsNdk() 谁能帮我确定这个问题吗。

    非常感谢。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Om Infowave Developers    7 年前

    经过长时间的调试,我在这里回答了自己的问题,我在JNI代码中发现了一个bug

    旧代码

    char signToken[endingNumber - startingNumber];
        int at = 0;
        for (int i = startingNumber; i < endingNumber; i++) {
            signToken[at] = cstr[i];
            at++;
        }
        signToken[at] = '\0';
    

    新代码

     char signToken[endingNumber - startingNumber + 1];
        int at = 0;
        for (int i = startingNumber; i < endingNumber; i++) {
            signToken[at] = cstr[i];
            at++;
        }
        signToken[at] = '\0';
    

    这是一个简单的子字符串登录,其中字符串大小等于字符串的长度,但它是字符串的长度+1。在将大小更新为N+1后,我解决了我的问题。

        2
  •  2
  •   Mohammad irshad sheikh    7 年前

    我认为你有一个旧版本或有问题的文件gralloc。RK30板。所以你需要更新它。 尝试 This 希望这对您有所帮助。:)