给hunter___的回复

##################10.24########

先很高兴告诉你,B2GOS已经完美运行在oneplusX!!谢谢你的建议。

这几天,我找到了前B2GOS的telegram频道,在B2G团队解散后,他们启动了一个实验性项目servonk on gonk,“This is an experimental project”,该项目在B2G基础上使用mozilla的新引擎servo替代gecko引擎,去掉了gecko和gaia层,从gonk层启动“servo”再启动前端UI。

说正题:
我把我的log问题与他们分享,他们给出了和你相似的建议,更换更加稳定的版本源码!

the crash seems to be a compositor crash
it’s likelly full of traps
gecko52 lacks a bunch of b2g apis
B2G2.6/48 is the latest with the b2g specific apis

master分支有太多的问题,并且我使用的还是gecko52,是最后一个存在B2G项目版本,维护最少的一个版本。

显然,从崩溃log知道问题出在gecko层的Compositor,但是相比于找到并修复Compositor问题代码的精力花销,我不如听你和前B2G团队的建议,更换稳定的B2G版本!下载了gecko44+gaia2.5代码,用变量更改gecko和gaia源码路径到下载的2.5代码,额外编译了一次gecko层和gaia层的源码,途中有点小报错,但问题解决,刷机,开机,一切正常。heppy,上几张图
在这里插入图片描述
在这里插入图片描述
嗯…图片方向反了……

不过我发现B2G系统有系统性问题,好像我不能通过gaia层应用API制作shell工具,而且如果要实现的话我要额外安装node.js(尽管这并不是难事)。

################旧的#########
谢谢你给我的分析意见,我在这里回答一下你的疑问。

  1. gdb调试工具是编译系统时自动加进去的,不需要我额外添加,并且系统开机默认不启动gdb服务,B2GOS官方提供了gdb调试的相关文档: https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/Debugging/Debugging_B2G_using_gdb

  2. 我没有设置断点gdb调试,也没有对MessageChannel.cpp进行修改。我采用的是官方GitHub分支d1276b5b84e6cf7991c8e640b5e0ffffd54575a6的gecko源码进行编译,该版本github链接为:https://github.com/mozilla-b2g/gecko-b2g/tree/d1276b5b84e6cf7991c8e640b5e0ffffd54575a6

MessageChannel.cpp第2057行附近函数代码:
在这里插入图片描述
这里应该只是一个console报错输出函数
MessageChannel.cpp代码链接:https://github.com/mozilla-b2g/gecko-b2g/blob/d1276b5b84e6cf7991c8e640b5e0ffffd54575a6/ipc/glue/MessageChannel.cpp#L2057

另外,在崩溃log段:

Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 1100 (Compositor)
I/DEBUG   (  275): property debug.db.uid not set; NOT waiting for gdb.
I/DEBUG   (  275): HINT: adb shell setprop debug.db.uid 100000
I/DEBUG   (  275): HINT: adb forward tcp:5039 tcp:5039

我理解的意思是系统出现Fatal signal 11崩溃,但是发现我没有给debug.db.uid赋值(100000),所以系统认为不需要在这里断点以及等待gdb调试的干预,然后直接继续运行下去,并且系统还提示如果需要断点调试要先给系统命令

adb shell setprop debug.db.uid 100000 
adb forward tcp:5039 tcp:5039 //建立ADB端口转发

才能启动gdb断点调试。

  1. 谢谢你给我的建议,的确,MessageChannel.cpp这部分代码和你提供给我的代码存在差异,我有必要分析这部分代码相关后才能知道崩溃是否出自这里。

目前我分析认为应该是未知进程出现了问题(从log中我不能确定是gecko还是Android底层的进程),导致display.qservice、SurfaceFlinger、permission服务死掉而最后才造成MessageChannel.cpp的报错。因为出现
###!!! ABORT: Aborting on channel error.: file /media/bingco/DATA_WIN/B2G/gecko/ipc/glue/MessageChannel.cpp, line 2057
报错前display.qservice、SurfaceFlinger、permission已经死掉(log截图第4473-4476行)。
在这里插入图片描述

  1. Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 1100 (Compositor)

参考你提供给我的建议:

1)头文件路径 ,编译环境发现,用到的头文件位置不同,导致结果差异。通过重新设置头文件路径。

存在这个可能,我会重新检测相关编译环境。

2)机器太老

我移植的是OneplusX手机,基于Android5.1版本,这款手机应该不算上很老的机器,电脑环境为Ubuntu16。

3)你自己的库有问题,。。。

不排除这个可能,O(∩_∩)O谢谢你提供的建议。

4)我感觉是你gdb那里的问题,具体报了文件名了都

是gdb的可能性不大,因为我并没有启动gdb服务。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值