【问题标题】:My application is crashing without log cat exception or any error info?我的应用程序在没有 log cat 异常或任何错误信息的情况下崩溃?
【发布时间】:2017-10-14 08:38:38
【问题描述】:

我的应用程序在返回 START_STICKY 后立即崩溃。

我的应用程序中有前台服务:

public class MyService extends Service {

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent != null) {
            if (intent.getAction().equals(STARTFOREGROUND_ACTION)) {
                // Code to create/update notification and start processing goes here
            } else if (intent.getAction().equals(ANOTHER_ACTION)) {             
                // Code to create/update notification and do another processing
            } else if (null != intent && intent.getAction().equals(STOPFOREGROUND_ACTION)) {
            stopForeground(true);
            stopSelf();
        }
        }   

        return START_STICKY; // Last reference point in debugger after which application crashes 
    }

    }

我尝试调试只有最后一点是返回 START_STICKY;专门用于 STOPFOREGROUND_ACTION 信号,之后它会崩溃。

没有错误,警告显示在应用程序日志中,无法找出可能出了什么问题。

我能做些什么来解决这个问题是我停止前台服务的方式是错误的,我还能做些什么来获得更多特定于应用程序的日志。

我在任何地方都检查了我的代码,我发现异常并将它们记录如下:

try {
           // Code expected to throw error or exception
        } catch (Exception e) {
            Log.e(TAG, Log.getStackTraceString(e));
        }

应用程序中没有我绕过异常的地方,它们被缓存并记录在任何地方。

当我禁用所有过滤器并在 log cat 上选择详细选项时看到的一些错误:

1] `A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)`

2]com.my.test.MyActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9

3][Application Error: com.my.test](this:0xb28d3c00,id:809,api:1,p:933,c:252) new GraphicBuffer needed

4]I/WindowState: WIN DEATH: Window{41e99c5 u0 com.my.test.MyActivity}

【问题讨论】:

    标签: android android-service


    【解决方案1】:

    由于没有人回应,我已经设法找出问题所在,问题是

    A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)
    

    由于引用 MediaRecorder 的线程停止服务而导致。我正在停止我的服务,如下所示:

    stopForeground(true);
    stopSelf();
    

    哪个(上)是停止服务的正确方法。但在停止服务之前,我正在释放和停止 MediaRecorder。由于 MediaRecorder 对象在release( 之后仍然可以被服务外的线程访问)任何 MediaRecorder 方法调用都会导致上述错误被抛出,并且它与本机代码而不是 java 代码有关,因此很难追踪。以下问题的此错误检查还有其他原因:

    Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). How can it be tracked down?

    由于personne3000this 问题的评论,我的问题解决了。

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 2016-03-19
      • 1970-01-01
      • 2020-01-20
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多