检测到堆栈损坏,dalvik VM 崩溃

Stack corruption detected, dalvik VM crash

我在 android 平板电脑上有一个跟踪器应用程序 运行ning。我注意到有些平板电脑有时会以某种方式自行重启。

当我调查问题时发现我收到 "stack corruption detected" 错误然后几毫秒后 android VM 崩溃。

这些崩溃每 5 分钟到 20 分钟发生一次,除了跟踪器应用 运行 并使用 GPS 和 3G 之外没有其他模式。

这些平板电脑 运行 android 4.2.2 很遗憾,这是三星的最新更新。

日志中没有提及我的 apk,我的应用程序是纯 java。到底是什么导致了这个问题,我该如何解决?

下面是 logcat 输出:

05-11 15:33:16.084: A/<unknown>(30963): stack corruption detected: aborted
05-11 15:33:16.116: I/ServiceManager(99): service 'bluetooth_manager' died
05-11 15:33:16.155: I/ServiceManager(99): service 'bluetooth_secure_mode_manager' died
05-11 15:33:16.155: I/ServiceManager(99): service 'input_method' died
05-11 15:33:16.155: I/ServiceManager(99): service 'accessibility' died
05-11 15:33:16.155: I/ServiceManager(99): service 'meminfo' died
05-11 15:33:16.155: I/ServiceManager(99): service 'DirEncryptService' died
05-11 15:33:16.155: I/ServiceManager(99): service 'container_service' died
05-11 15:33:16.155: I/ServiceManager(99): service 'audio' died
05-11 15:33:16.155: I/ServiceManager(99): service 'wallpaper' died
05-11 15:33:16.155: I/ServiceManager(99): service 'display' died
05-11 15:33:16.155: I/ServiceManager(99): service 'power' died
05-11 15:33:16.155: I/ServiceManager(99): service 'activity' died
05-11 15:33:16.155: I/ServiceManager(99): service 'CustomFrequencyManagerService' died
05-11 15:33:16.155: I/ServiceManager(99): service 'gfxinfo' died
05-11 15:33:16.155: I/ServiceManager(99): service 'usagestats' died
05-11 15:33:16.155: I/ServiceManager(99): service 'content' died
05-11 15:33:16.155: I/ServiceManager(99): service 'log_manager_service' died
05-11 15:33:16.155: I/ServiceManager(99): service 'cpuinfo' died
05-11 15:33:16.155: I/ServiceManager(99): service 'account' died
05-11 15:33:16.155: I/ServiceManager(99): service 'telephony.registry' died
05-11 15:33:16.155: I/ServiceManager(99): service 'battery' died
05-11 15:33:16.155: I/ServiceManager(99): service 'entropy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'mount' died
05-11 15:33:16.155: I/ServiceManager(99): service 'sensorservice' died
05-11 15:33:16.155: I/ServiceManager(99): service 'dbinfo' died
05-11 15:33:16.155: I/ServiceManager(99): service 'vibrator' died
05-11 15:33:16.155: I/ServiceManager(99): service 'mdm.remotedesktop' died
05-11 15:33:16.155: I/ServiceManager(99): service 'alarm' died
05-11 15:33:16.155: I/ServiceManager(99): service 'scheduling_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'hardware' died
05-11 15:33:16.155: I/ServiceManager(99): service 'user' died
05-11 15:33:16.155: I/ServiceManager(99): service 'permission' died
05-11 15:33:16.155: I/ServiceManager(99): service 'batteryinfo' died
05-11 15:33:16.155: I/ServiceManager(99): service 'edmnativehelper' died
05-11 15:33:16.155: I/ServiceManager(99): service 'harmony_eas_service' died
05-11 15:33:16.155: I/ServiceManager(99): service 'enterprise_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'remoteinjection' died
05-11 15:33:16.155: I/ServiceManager(99): service 'clipboard' died
05-11 15:33:16.155: I/ServiceManager(99): service 'clipboardEx' died
05-11 15:33:16.155: I/ServiceManager(99): service 'netstats' died
05-11 15:33:16.155: I/ServiceManager(99): service 'textservices' died
05-11 15:33:16.155: I/ServiceManager(99): service 'statusbar' died
05-11 15:33:16.155: I/ServiceManager(99): service 'application_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'wifi_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'package' died
05-11 15:33:16.155: I/ServiceManager(99): service 'phone_restriction_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'network_management' died
05-11 15:33:16.155: I/ServiceManager(99): service 'enterprise_license_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'window' died
05-11 15:33:16.155: I/ServiceManager(99): service 'input' died
05-11 15:33:16.155: I/ServiceManager(99): service 'netpolicy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'multiwindow' died
05-11 15:33:16.155: I/ServiceManager(99): service 'wifip2p' died
05-11 15:33:16.155: I/ServiceManager(99): service 'sec_analytics' died
05-11 15:33:16.155: I/ServiceManager(99): service 'wifi' died
05-11 15:33:16.155: I/ServiceManager(99): service 'wfd' died
05-11 15:33:16.155: I/ServiceManager(99): service 'notification' died
05-11 15:33:16.155: I/ServiceManager(99): service 'dropbox' died
05-11 15:33:16.155: I/ServiceManager(99): service 'devicestoragemonitor' died
05-11 15:33:16.155: I/ServiceManager(99): service 'search' died
05-11 15:33:16.155: I/ServiceManager(99): service 'country_detector' died
05-11 15:33:16.155: I/ServiceManager(99): service 'location' died
05-11 15:33:16.155: I/ServiceManager(99): service 'updatelock' died
05-11 15:33:16.155: I/ServiceManager(99): service 'throttle' died
05-11 15:33:16.155: I/ServiceManager(99): service 'servicediscovery' died
05-11 15:33:16.155: I/ServiceManager(99): service 'connectivity' died
05-11 15:33:16.155: I/ServiceManager(99): service 'lock_settings' died
05-11 15:33:16.155: I/ServiceManager(99): service 'device_policy' died
05-11 15:33:16.155: I/ServiceManager(99): service 'usb' died
05-11 15:33:16.155: I/ServiceManager(99): service 'serial' died
05-11 15:33:16.155: I/ServiceManager(99): service 'uimode' died
05-11 15:33:16.155: I/ServiceManager(99): service 'backup' died
05-11 15:33:16.155: I/ServiceManager(99): service 'appwidget' died
05-11 15:33:16.155: I/ServiceManager(99): service 'diskstats' died
05-11 15:33:16.155: I/ServiceManager(99): service 'AtCmdFwd' died
05-11 15:33:16.155: I/ServiceManager(99): service 'samplingprofiler' died
05-11 15:33:16.155: I/ServiceManager(99): service 'commontime_management' died
05-11 15:33:16.155: I/ServiceManager(99): service 'motion_recognition' died
05-11 15:33:16.155: I/ServiceManager(99): service 'voip' died
05-11 15:33:16.155: I/ServiceManager(99): service 'dreams' died
05-11 15:33:16.155: I/ServiceManager(99): service 'license_log_service' died
05-11 15:33:16.162: W/AudioFlinger(30688): power manager service died !!!
05-11 15:33:16.170: I/audio_policy_mrvl(30688): mrvl_ap_dev_release_output: 2 (hardware output)
05-11 15:33:16.170: I/audio_policy_mrvl(30688): mrvl_ap_dev_release_output: 2 (hardware output)
05-11 15:33:16.178: W/Sensors(31110): sensorservice died [0x5d194240]
05-11 15:33:16.178: W/Sensors(31315): sensorservice died [0x5d1b4d70]
05-11 15:33:16.178: W/Sensors(31217): sensorservice died [0x5bab4fa0]
05-11 15:33:16.178: W/Sensors(31204): sensorservice died [0x5d1ae190]
05-11 15:33:16.178: W/Sensors(2742): sensorservice died [0x5d13c0e8]
05-11 15:33:16.186: D/SurfaceFlinger(111): Screen acquired, type=0 flinger=0x405083c8
05-11 15:33:16.186: D/SurfaceFlinger(111):  screen was previously acquired
05-11 15:33:16.373: D/AndroidRuntime(31204): Shutting down VM
05-11 15:33:16.373: W/dalvikvm(31204): threadid=1: thread exiting with uncaught exception (group=0x40dee930)
05-11 15:33:16.420: E/AndroidRuntime(31204): FATAL EXCEPTION: main
05-11 15:33:16.420: E/AndroidRuntime(31204): java.lang.RuntimeException: android.os.DeadObjectException
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.net.TrafficStats.getMobileIfaces(TrafficStats.java:641)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.net.TrafficStats.getMobileTxPackets(TrafficStats.java:270)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at com.android.internal.telephony.DataConnectionTracker$TxRxSum.updateTxRxSum(DataConnectionTracker.java:510)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at com.android.internal.telephony.DataConnectionTracker.updateDataActivity(DataConnectionTracker.java:1566)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at com.android.internal.telephony.DataConnectionTracker.run(DataConnectionTracker.java:431)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.os.Handler.handleCallback(Handler.java:725)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.os.Looper.loop(Looper.java:176)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.app.ActivityThread.main(ActivityThread.java:5365)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at java.lang.reflect.Method.invokeNative(Native Method)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at java.lang.reflect.Method.invoke(Method.java:511)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at dalvik.system.NativeStart.main(Native Method)
05-11 15:33:16.420: E/AndroidRuntime(31204): Caused by: android.os.DeadObjectException
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.os.BinderProxy.transact(Native Method)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.net.INetworkStatsService$Stub$Proxy.getMobileIfaces(INetworkStatsService.java:232)
05-11 15:33:16.420: E/AndroidRuntime(31204):    at android.net.TrafficStats.getMobileIfaces(TrafficStats.java:639)
05-11 15:33:16.420: E/AndroidRuntime(31204):    ... 13 more
05-11 15:33:16.452: E/installd(116): eof
05-11 15:33:16.452: E/installd(116): failed to read size
05-11 15:33:16.452: I/installd(116): closing connection
05-11 15:33:16.452: I/Process(31204): Sending signal. PID: 31204 SIG: 9
05-11 15:33:16.452: E/AndroidRuntime(31204): Error reporting crash
05-11 15:33:16.452: E/AndroidRuntime(31204): android.os.DeadObjectException
05-11 15:33:16.452: E/AndroidRuntime(31204):    at android.os.BinderProxy.transact(Native Method)
05-11 15:33:16.452: E/AndroidRuntime(31204):    at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:3624)
05-11 15:33:16.452: E/AndroidRuntime(31204):    at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:138)
05-11 15:33:16.452: E/AndroidRuntime(31204):    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
05-11 15:33:16.452: E/AndroidRuntime(31204):    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
05-11 15:33:16.452: E/AndroidRuntime(31204):    at dalvik.system.NativeStart.main(Native Method)
05-11 15:33:16.467: I/ServiceManager(99): service 'phone' died
05-11 15:33:16.467: I/ServiceManager(99): service 'isms' died
05-11 15:33:16.467: I/ServiceManager(99): service 'phoneext' died
05-11 15:33:16.467: I/ServiceManager(99): service 'iphonesubinfo' died
05-11 15:33:16.467: I/ServiceManager(99): service 'sip' died
05-11 15:33:16.467: I/ServiceManager(99): service 'simphonebook' died
05-11 15:33:16.467: I/audio_policy_mrvl(30688): mrvl_ap_dev_release_output: 2 (hardware output)
05-11 15:33:16.608: I/BootAnimation(6191): ret=2, fps:12, interval:83333
05-11 15:33:16.639: I/BootAnimation(6191): createSurface RGB565
05-11 15:33:16.639: E/BootAnimation(6191): /sys/class/sec/led/led_pattern: open error, fd = -1
05-11 15:33:16.639: W/BootAnimation(6191): resolution w=600, h=1024
05-11 15:33:16.639: W/BootAnimation(6191): original qmg w=600, h=1024
05-11 15:33:17.233: E/InputEventReceiver(31217): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.444: E/InputEventReceiver(31110): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.444: E/Sensors(31315): SensorEventQueue::waitForEvent error HANGUP
05-11 15:33:17.444: E/InputEventReceiver(835): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.452: E/InputEventReceiver(31110): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.452: E/InputEventReceiver(835): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.452: E/InputEventReceiver(835): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.452: E/InputEventReceiver(835): channel ~ Publisher closed input channel or an error occurred.  events=0x9
05-11 15:33:17.452: D/Zygote(30691): Process 30963 terminated by signal (6)
05-11 15:33:17.452: I/Zygote(30691): Exit zygote because system server (30963) has terminated
05-11 15:33:17.616: I/Netd(6197): Netd 1.0 starting
05-11 15:33:17.623: W/InterfaceController(6197): Warning (Cannot load library: load_library(linker.cpp:745): library "/system/lib/libnetcmdiface.so" not found) while opening the net interface command library
05-11 15:33:17.772: E/SMD(107): DCD OFF
05-11 15:33:17.928: I/ServiceManager(99): service 'media.audio_flinger' died
05-11 15:33:17.928: I/ServiceManager(99): service 'media.player' died
05-11 15:33:17.928: I/ServiceManager(99): service 'media.camera' died
05-11 15:33:17.928: I/ServiceManager(99): service 'media.audio_policy' died
05-11 15:33:17.936: D/FileMonitorService(120): binderDied() 1 0x40918c90, tid 158, calling tid 120

那不是您的应用程序崩溃。那是 Android 运行时崩溃,它会带走一切(包括您的应用程序)。

只要你看到一大堆服务死掉,你就知道 system_server 已经死了。一些特定的日志突出了失败:

05-11 15:33:16.084: A/<unknown>(30963): stack corruption detected: aborted
[...]
05-11 15:33:17.452: D/Zygote(30691): Process 30963 terminated by signal (6)
05-11 15:33:17.452: I/Zygote(30691): Exit zygote because system server (30963) has terminated

第一个将本机 system_server 堆的堆栈损坏标识为失败原因,另外两个将 pid 30963 标识为 system_server。信号 6 是 SIGABRT,它 system_server 在检测到损坏时发送给自己。

这不是您可以解决的问题 -- 平台存在错误,而不是您的应用程序。我的猜测是 system_server 中有一些错误代码 运行,可能是由 OEM 引入的,您的应用正在执行这些代码。您可以通过更改应用程序的行为以不执行该错误来解决该问题,但不了解可能很困难的错误的更多信息。如果此设备没有超过 4.2.2 的更新,则不太可能从制造商处获得系统修复。

您可以通过使用 adb logcat -v threadtime 收集日志来显示线程 ID,然后查看哪个线程报告损坏,从而了解更多信息。崩溃前的 adb shell ps -t 可能会给线程一个有意义的标签。当然,对于本机损坏,任何线程都可以践踏任何其他线程,但是对于堆栈损坏,线程更有可能伤害自己。

此问题与 GPS 相关,在恢复出厂设置数周后恢复正常,然后再次发生。所以我大胆猜测并认为它与 A-GPS 缓存有关。

我在每次重启后使用以下代码清除 GPS 缓存,它似乎有效。

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,"delete_aiding_data", null);
Bundle bundle = new Bundle();
locationManager.sendExtraCommand("gps", "force_xtra_injection", bundle);
locationManager.sendExtraCommand("gps", "force_time_injection", bundle);

这仍然不是解决方法,只是忽略和推迟问题的解决方法。 SM-T111NQ 设备存在实际问题,三星尚未提供修复。

好像有时候找不到adb。所以请尝试重新安装 Dalvik 机器和 adb 安装程序。