当我写下这段文字时,时间是 2022 年 1 月 9 日,这个时候发上一年年终总结似乎晚了点;老实说,在这个博客刚创建的时候,我没有打算写这种记录性的内容,我的目标一直都是像 Weishu’s Notes 的高质量内容;但是昨晚看 weishu 直播写代码,他说了一句让我很触动的话:“人生不需要有意义,有意思就够了。”我的 2021 可能没什么意义,但如果我不做点什么纪念一下,它很有可能就消逝在时间的长河里,连我自己都回忆不起来,更别提有意思了。

计算机:LSPosed 与向 Magisk 提交 PR

2021 年开头,发生了一件大家可能都知道的事情:shana 姐姐希望给 EdXposed 做出较大修改,如强制白名单作用域等,但 MlgmXyysd 姐姐不同意,认为应该保持与原版 Xposed 的一致性,吵过几次之后,shana 姐姐宣布分道扬镳,创建 LSPosed 还带走了 ksm。最初版的 LSPosed 就是一个强制启用了作用域版的 EdXposed,但仅仅如此就有大量用户表示获得了巨大的性能提升。以后的日子里,他们重构了整个项目,带来了基于 binder 的后端服务,修复了一大堆 bug 还添加了新的 API。当然这一切都与我没什么关系,我自己几乎一行代码没给 LSPosed 写过,也就是几个 art 有关的 bug 和一起他们讨论出修复方法,说白了就是打个酱油——惊喜的是,我竟然获得了 owner !而且和一群志同道合的哥哥姐姐们互相交流技术一起写代码真的很开心!!学会了很多我自己可能一辈子也学不到的东西!!如今,LSPosed 已经是国内外最受欢迎的 Xposed 实现,也算是完成了自己以前的一个小心愿吧~

在 LSPosed 刚开始的时候,我们就一直收到用户反馈安装后手机无法开机,获取到 log 后发现是 Magisk 挂载系统文件时到一半突然卡住,从 log 里完全看不出原因。更奇怪的是,我们添加了一些 log 构建出自己的 debug 版本发给用户测试后,竟然可以开机了!!百思不得其解之际,内群里另一位开发者的 magisk 卡住了,而且她的 sui 可以在 magisk su 不可用时获取到 root 权限帮助调试。用 lldb 折腾了两天之后,我们终于搞清楚她的问题出在哪里:log 里调用的 localtime_r 里面有一把不可重入的锁,加锁之后刚好收到一个 signal,程序直接转跳到 signal handler 执行,signal handler 打印 log 又要再次调用 localtime_r,里面又尝试获取自己已经加过的锁,然后直接死锁。理论上讲,它确实可以造成之前的问题,等到 magisk 把这个 bug 修复之后,我们以为万事大吉了。然而事实是,我们仍然继续收到相关反馈。几个月后,我们终于找到了一位可以稳定复现该问题的用户,最后发现了这个 bug 的本质:magisk 使用了一个没有初始化的变量,它可能是随机值。提交修复之后,整个内群都在发这么一句话:截图

这是我们第一次和 magisk bug 打交道。之后,我偶然发现我的备用手机红米 5 Plus 上 magisk hide 完全不工作,一开始我以为是我刷的 lineageos 的原因,但后来我在我的 Pixel 3 上也开始随机遇到这个问题,而且不断有人向我反馈 MomoHider 工作不正常,调查后发现是 magisk hide 坏了。某一天我静下心来,把那台备用机开机,连上电脑,一遍遍回看相关逻辑一点点改代码,最后被我一行代码修好了。然后我向 magisk 提交了我自己的第一个 PR,很可惜的是因为 magisk 后来删除了 magisk hide,我的 PR 没有被合并。往后的日子里,我们给 Magisk 提交了多次代码,修复了多个 bug。在之前我绝对想不到在全世界范围里获得数亿使用的 Magisk 会有这么多 bug,也很开心自己能参与一个这么大的项目,希望自己在新的一年里学到更多,最好拿到 collaborator (

学习:中职日常

寒假结束回到学校之后,我被发下来的课程表震惊了:我们的专业名叫计算机网络技术,但是第二学期把这门专业课给取消了,然后加了什么 常用工具软件(教你怎么用 QQ 怎么用美图秀秀怎么用酷狗音乐腾讯视频)还有 Photoshop。去问学校这是怎么回事,得到的答复是,学生们反映这门课太难听不懂就取消了。无语至极,也只能一边上着荒唐至极的课,一边自学准备高职高考。幸运的是,能在这里碰到一起编程一起学习一起高考的伙伴。三个月电子厂实习也结束了,希望自己新的一年能全力备战高考~

实习:被推向电子厂的三个月

六月份听说计算机等级考试九月份开始报名,十一点一到直接在课堂上拿出电脑报名。现在想来庆幸当时的自己的果断,韶大考点名额很少被自己抢到了一个,过了一天再去看只剩下松山学院可以报了~ 但是,直到期末我们才被通知,下个学期一开始就要去实习三个月。度过了一个暑假,开学了,学校果然没骗我,待了三天就直接坐着大巴去了几百公里外的城市。说是实习,其实也就是让学生去电子厂干些正常人都会干的活。在厂里上班三个月,我的感受就是这不是人干的活:程序员天天抱怨的996在那里根本就不是问题,我最晚一次早上八点上班上到晚上十点半,连晚饭都没吃;几乎没有假放,中秋的一天还是调休调出来的,国庆只有三天回趟家几乎在睡觉中度过;第一个月还好,第二个月开始上夜班两班倒,到后面基本上就是麻木的在那里干活,脑子放空手上还在机械的做那些动作,感觉时间流速都不一样了,活还在手上干着外面天已经亮了;回来基本上手机拿在手里没充电坐在床上就直接睡着了。三个月下来,拿到手工资不到一万,还把之前的基础几乎忘完了,到实习结束写实习报告的时候连字都不会写。但好在,这三个月我已经熬过来了。现在只希望自己能好好自学,参加高职高考能考上好的大学,否则按国内这个环境,我会再难的东西也是去电子厂的命。在知乎上看见一个立志要考上深职院的学姐,真的很励志呀,希望自己也能怎么努力~附上链接:中职生高职高考自学,感觉找不到好的方法学习方法,该怎么办? - 话梅的回答 - 知乎

在故事结束之后的故事

回来学校之后,很迷茫,似乎又回到了以前在学校那种状态,上完六节课就在课室或者宿舍躺着,送的试卷也没动力去翻一下。昨天晚上看 weishu 直播修 bug,猛然又想起当时的梦想,当时的梦多么天真多么美好啊,那就让我们去实现它吧~ 我不是一个有恒心的人,所以如果你愿意的话,请监督我吧,希望我们能在美好的未来相见~~