关闭

[置顶] 聊一聊binder driver导致的系统重启问题

问题现象这个问题最早是由接电话重启的现象暴露出来的,当时看到异常信息是Native crash,栈如下:Build fingerprint: 'Xiaomi/scorpio/scorpio:6.0.1/MXB48T/6.10.8:user/release-keys' Revision: '0' ABI: 'arm64' pid: 1383, tid: 1400, name: Binder_1 >>>...
阅读(1470) 评论(2)

[置顶] Android Studio在线调试Android Framework Java代码

一、准备工作1、下载最新的Android Studio版本 https://developer.android.com/studio/index.html 当前最新的大版本是2.2 2、下载Android系统源码这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码环境配置参考 https://source.android.com/source/initializing.h...
阅读(2872) 评论(1)

[置顶] 由Monkey测试引发的跨多个进程的Android系统死锁问题分析

一、问题现象1、界面定住,没有任何刷新,所有输入事件无效,包括power key2、adb shell可以连接并操作手机3、手机的data和sdcard存储空间已满4、watchdog没有重启system server二、解决方案通过初步分析、深入分析(具体分析过程和关键代码及log在下面)我们知道了问题的原因:1、monkey测试的过程中起了bugreport,并将bugreport输出到stdo...
阅读(2602) 评论(0)

[置顶] 由Asset中的double free引发的Android系统及APP崩溃问题分析

前言这个问题在来小米之前就遇到并解决过,当时的解决方案与朴老师的初步解决方案一样,本文在之前的初步分析结果之上进一步进行了深入分析,最终得出了当前看起来相对合理并符合原来架构设计的最终方案。 文中引用了朴老师抓的backtrace,同时在进一步分析的过程中朴老师也提出的大量有建设性的问题,感谢朴老师!一、问题现象1、systemui高频崩溃2、system server崩溃导致重启二、解决方案通过...
阅读(2159) 评论(2)

[置顶] 小米(MIUI)系统组招聘职位

招聘职位1. 高级Android系统开发工程师高级Android系统开发工程师 工作职责: 1.从Linux Kernel、Framework(Java+Native)等多个层面改进、增强Andorid系统和MIUI,提升用户体验 2.负责Android系统稳定性,解决各类系统问题,如死机重启、FC、ANR等各类疑难问题 3.研究和跟进Android版本升级及最新Linux k...
阅读(2028) 评论(0)

GDB在线调试Android Framework Native C/C++代码

一、准备工作1、下载并编译Android系统源码这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码环境配置参考 https://source.android.com/source/initializing.html 源码下载参考 https://source.android.com/source/downloading.html 编译运行参考 https://sour...
阅读(1605) 评论(1)

由Ctrl+Z引发的系统卡死重启问题分析

起因JT同学拿着手机来找我说用着用着自动重启了,让我看一下,我抓出bugreport一看是system server发生watchdog重启了,然后接着看了一下traces,发现traces比较诡异。初步分析为什么说traces诡异?暂且一看都被thread 31持有的锁给block了,那就看看thread 31在搞什么飞机?"InputDispatcher" prio=10 tid=31 Nati...
阅读(1947) 评论(0)

由ContactsProvider的升级引发的OTA首次开机卡白米问题分析

上午的宁静被一个OTA卡白米问题打破,接下来不断有人反馈不同机型都复现了OTA后卡白米,10.9号OTA升级到10.10号的版本,全机型问题,线刷没有问题,好吧,接下来就根据这些信息开始初步分析log吧!初步分析查看问题log,发现Boot phase到了PHASE_SYSTEM_SERVICES_READY 并且走到了PackageManagerService.systemReady10-1...
阅读(1101) 评论(0)

Android4.4.2KK竖屏强制更改为横屏的初步简略方案

解决方案:当前是根据当前问题场景即竖屏强制更改为横屏的需求而做的改动,基本是hardcode定义的状态,总共修改有效代码行数5行,如果后续有其他需求或者需要更灵活的配置横屏和竖屏,可以采用编译开关生成系统属性的方式来控制,在系统中通过属性来判断当前的屏幕状态以达到灵活目的,可以在本次修改的基础上增加条件判断达到目的,具体修改代码如下图中圈红标识。一、Android Framework Java层的...
阅读(3032) 评论(3)

Mac OS下terminal的快捷键

时隔2年又开始使用Mac OS系统,之前的很多快捷键和常用的命令都忘记了,使用起来确实不方便,效率也低,特别是terminal下,所以对于terminal又找了一下并整理如下,希望对后来的同学也有用:control + a 将光标移到行首control + e 将光标移到行尾control + l 清空屏幕,与clean命令效果相同control + u 清除当前行control + k 清除至当...
阅读(2167) 评论(2)

温故知新,基础复习(二叉堆排序)

温故知新,基础复习(二叉堆排序)最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序)下例是最小堆#include #include void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex) { int TeampValue = Arra[LeftIndex]; Arra[LeftIndex]=Arr...
阅读(1576) 评论(1)

温故知新,基础复习(快速排序及优化)

温故知新,基础复习(快速排序及优化)使用了三值取中和插排优化#include #define InsertSortNumber 10 void InsertSort(int Arra[],unsigned int LowIndex,unsigned int HighIndex) { printf("low=%d,high=%d\n",LowIndex,HighIndex); for (un...
阅读(1554) 评论(0)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)#include #include void PrintSumNumbers(int Arra[],int ASize,int Sum) { //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n"); ...
阅读(1568) 评论(0)

大数据处理时的一种BitMap小算法

一种大数据外部排序(内存无法加载所有排序元素)、去除重复元素、快速找到随机被删除元素的BitMap小算法,核心思想即通过将一个数作为下标(index)来索引一个bit表示一个数是否存在,排序时的时间复杂度为O(N),需要的额外空间的复杂度O(N/8),支持整个int范围(正负数都支持)的算法示例如下:char BitMask[] = {0x80 , 0x40 , 0x20 , 0x10 , 0x8...
阅读(5283) 评论(0)

Android5.0L下因sensorservice crash导致systemserver重启的另外一种场景分析

一、出问题的场景1、Sensorservice线程正在处理compass sensor事件的过程中,检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,收到了disable compass sensor的请求,从log...
阅读(2471) 评论(0)
274条 共19页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1501610次
    • 积分:14898
    • 等级:
    • 排名:第861名
    • 原创:269篇
    • 转载:1篇
    • 译文:4篇
    • 评论:506条
    博客公告
    欢迎大家交流学习!
    eMail:songjinshilove@163.com
    QQ:809800300
    博客专栏
    最新评论