这阵子一直在处理各种死机和STR开关机问题,虽说稍微有点虐,不过技术面的扩展和更多新技巧的学习了解,也让我挺enjoy的。kernel世界对我来说,一直是一个black box,很迷。随着上阵子切bionic、看完程序员的自我修养以及这阵子为处理一个语音唤醒问题学习AN8.0的DC待机流程,发现这个是通过reboot函数做syscall进kernel待机,感觉打开一个新世界。虽然之前也是知道这条通路,但当问题和整个代码流程浮现在你面前时,一切依旧像盒子中的巧克力让你兴奋不已。
记一次DFB异常问题处理和思考
本周处理的诸多问题中有两个是串联起来的,都是DFB相关的问题,一个是FD Leak,一个是创建线程没退出,这两个问题的处理过程本不是很复杂,常规手段即可处理,但这次debug过程中,暴露出一些coding上的问题,也是一个提醒。
内存异常处理手段总汇 一 -- electric-fence及其源码解析
内存越界类问题都不太好搞,但也充满乐趣,有如侦探抽丝剥茧般。因为处理过好些这类问题,也就有想法将这些手段总汇起来,建立成一个辑录供参考。实际第一篇早已做出,即GCC SSP Canary功能简介一篇,这也就是第二篇了。从electric-fence开始主要因其代码简单,一来方便阅读,二来方便自己修改优化。小工具用好即为神器,会用然后再做修改,便能顺心随意。本文最后的总结也提及一个修改tcmalloc实现自己需求的团队例子,器终归是器,用的人才是决定其价值的关键。
多进程访问共享库全局变量问题简单实例——全局变量被踩debug方法辑录
上周处理一个问题,发现一个so的结构体全局变量数据异常。一开始怀疑是没dump成功,后面加log发现异常时对象全为0了。确认打印发现该结构体某成员一会为0一会为1,便初步定性为全局变量被踩,最终经过各种手段、alpha和kent大的助攻定位到原因。实际该问题是一个多进程环境共享对象内全局变量分配问题。很好玩的一个问题,就此简要分享。
《见识》观后
前阵子公司活动,我参与投稿为部门赢得一小笔活动经费,部长让我选一份100元内的礼物作为奖品鼓励,最终我选了吴军老师的两本书《智能时代》和《见识》。就在上个月,我看完了《见识》,鉴于以往看书都是找寻书中最有益于自己的一点加以实践,化为己用,其他观点仅作参考,对于好书则会闲时再翻阅。近来却也发现,这种方法读下来,很多书读完就忘,理解流于表面,没能真正看懂一本书。也因此,我决定换个方式读书,即在看完之后,将自己的体会写出来,再慢慢咀嚼消化,真正去感受这本书,不再走马观花,希望这样能有更好的效果。见识这本书,也将是我这么实践的第一本。
GCC SSP Canary功能简介
处理一个开机coredump问题时,发现是一个必现canary问题,即内存越界访问。一般这类问题发生在数组越界访问,不过这次出现的rootcause有所不同,为代码未对齐导致结构体没对齐,继而在数据传输过程中出现访问越界。bug简单,但鉴于canary是一个有趣的设计,犹如人体免疫系统的表层屏障,能有效规避一些bug,因此我便萌生兴趣系统地了解这个机制,相关学习记录成此文。
春秋
本文源自我发在知乎上的一篇回答,16年年初,LP推荐我春秋这首歌,自此开始喜欢张敬轩,也开始入坑林夕。春秋是我最喜欢的一首歌,对其“备胎词”之说的不认同最终推动我写下了知乎的回答( 張敬軒的《春秋》歌詞講的是什麼呢? )。
截止目前,这首歌不同版本我听了快四千遍,余音绕梁,便对原答案稍加修整,作成此文。同时,私以为好歌手的歌喉是这世间最独一无二的乐器,而轩在这首体现得很好。
满师 - 香港理工大学毕业设计展
周六和boss双人游HK,主要是去吃和逛,吃了兰芳园、麦奀云吞面、佳佳甜品、妈咪鸡蛋仔等等。讲真,云吞面和丝袜奶茶一直是必吃的,加上都是老店,所以感觉不差。佳佳甜品则是杨枝甘露卖完,然后我跳过芝麻糊和杏仁露点了木瓜炖银耳,真心鄙视下自己,只能下次再补回来了。
除了吃的,就是逛。逛中大和理大,其中最大的收获是理大的满师毕业展。不得不说,这次年展的内容和质量不错,不少设计关心环境保护、可持续、老龄化等社会问题,相信内地也将需要面对和克服这些问题。
我个人感兴趣的方向是交互设计、产品设计、环境和室内设计以及相关科技类作品,因此脑袋装的基本是这些。其实,在其他专题也有不少亮点,比如多媒体设计部分,我看了两部片,同时pick 失物认领处的创意。
不过,隔了一个星期,现在写起上周的展览观感也不是很顺,哈哈,今日事今日毕是有道理的。
Debug Checklist
经常和各种bug打交道,处理多了,也就会发现有些流程在处理不同问题都会用到,套路是也。
鉴于很多流程早期容易被忽略,后续debug需重新沟通了解,造成不必要的麻烦。也因此,我有想法将这些流程整理汇总,后续debug做checklist用,同时记录下来也能不断完善改进。
这篇目前只是搭个架子,还会不完善改进。