android 4.4,服务'SurfaceFlinger'死了

时间:2014-05-04 16:05:05

标签: android surfaceflinger

我正在运行一个使用ScreenshotClient在循环中捕获屏幕的本机进程。 几次运行后,当我关闭进程时,我得到“服务'SurfaceFlinger'死了”,屏幕重新启动。这不会发生在Android 4.2中。

这是回溯:

I/DEBUG   (  111): backtrace:
I/DEBUG   (  111):     #00  pc 0002a61e  /system/lib/libgui.so
I/DEBUG   (  111):     #01  pc 0002f205  /system/lib/libgui.so (android::Surface::queueBuffer(ANativeWindowBuffer*, int)+220)
I/DEBUG   (  111):     #02  pc 0002e2cd  /system/lib/libgui.so (android::Surface::hook_queueBuffer(ANativeWindow*, ANativeWindowBuffer*, int)+10)
I/DEBUG   (  111):     #03  pc 00017fb9  /system/lib/libsurfaceflinger.so
I/DEBUG   (  111):     #04  pc 0001b6f1  /system/lib/libsurfaceflinger.so
I/DEBUG   (  111):     #05  pc 00015e6f  /system/lib/libsurfaceflinger.so
I/DEBUG   (  111):     #06  pc 00010767  /system/lib/libutils.so (android::Looper::pollInner(int)+394)
I/DEBUG   (  111):     #07  pc 00010869  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+92)
I/DEBUG   (  111):     #08  pc 00016089  /system/lib/libsurfaceflinger.so
I/DEBUG   (  111):     #09  pc 00016f7b  /system/lib/libsurfaceflinger.so (android::SurfaceFlinger::run()+6)
I/DEBUG   (  111):     #10  pc 000008fd  /system/bin/surfaceflinger
I/DEBUG   (  111):     #11  pc 0000e403  /system/lib/libc.so (__libc_init+50)
I/DEBUG   (  111):     #12  pc 000007dc  /system/bin/surfaceflinger

2 个答案:

答案 0 :(得分:0)

在过去的几天里,我看到3个SurfaceFlinger自己崩溃了。似乎实现中存在一个错误。由于我使用的是S5,我不能说它是三星特定的或一般的Android 4.4.2问题。你正在使用哪种设备?

要从此问题中恢复,您只需重新启动设备即可。有时我设法执行“kill -9”(我使用“ps | grep”获得了pid)并且无需重启设备即可将所有内容恢复生效。我曾经杀死剩余/悬挂的surfaceflinger或mediaserver服务。因为它在被杀之后会自动重启,之后一切都会好起来的。

由于这些是随设备一起提供的二进制文件,因此可能无法解决此问题。但是有一个小机会:如果二进制文件与AOSP(Android开源项目http://source.android.com/中的二进制文件相同),您可以尝试编译它们并替换手机上的二进制文件(请先备份原始文件)

如果二进制文件是特定于设备的,您可以在设备供应商的开源页面上找到它们。就像三星设备的http://opensource.samsung.com/一样。这些源通常易于编译,可以替换手机上的二进制文件。

除此之外,我认为没有比报道这个问题更多的了。

答案 1 :(得分:0)

当我干净地关闭过程而不是杀死它时,SurfaceFlinger不会再死了。