现象
公司的一个项目客户端用了nwjs这套框架, 前段时间测试人员发现了多次crash现象, 由于nwjs这套是由我提出来使用的, 公司内部的维护人员也是我, 于是我配合前端定位这个问题.
定位问题
nwjs在release版本下我们的应用程序会出现随机crash, 可是没法确定重现这个问题, 于是我们编译了一个debug版本, 希望crash的时候堆栈能够好看点. 编译出来之后发现我们的程序启动加载的时候就会问题, 可是打开普通网页却没有问题. 我们花了两天的时间定位为, 加载阿里字体图标的时候, 会出现crash。
继续crash
修正字体图标之后, 程序在debug版本下继续出现crash. crash的很诡异, 我们定位几个crash点的时候, 发现是css渲染的问题, 具体是某个css属性加了之后, 程序就crash了.
从C++的角度看这个问题
通过dump文件分析, 大约是通过js去渲染css的时候, 渲染里面crash了. nwjs里面整个线程的管理还是比较混乱的, 感觉是某个js线程, 执行了不该由这条线程执行的东西.
现状
我们并没有维护nwjs的代码, 当我提出使用这套框架的时候, 我并没有安排做相关的事情. 现在出了这种问题, 一下子要解决是基本上不可能的, 而且我还有自己的项目, 根本没法在这个项目上花更多的时间. 一下子这个问题就变得无解了!
遇到无解的问题该怎么办
前前后后在这个项目上花了半个月的时间, 基本上没有进展. 整个nwjs的代码量太大, 要在短时间之内看懂不现实, 最后项目组决定放弃这个问题. 我们前端解决了一个导致crash的css问题, 降低了整个crash的概率, 然后强行发了版本. 所幸的是发出去之后并没有收到crash的反馈, 但是事实上我们并没有解决这个问题.
教训
这个项目我唯一参与的地方是编译了nwjs, 之后并没有再关注nwjs, 这种框架性的东西如果我们一旦决定采用, 我们应该持续保持关注, 否组出了问题, 就只能干着急了.
当debug出第一个问题的时候, 便知道这个问题无解了. 后面还浪费这么多时间在上面真是不值. 以后再遇到这种问题, 一旦发现无解了应该立马收手.
欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.
请问该文章中的css问题是哪个css引起,烦请告知,谢谢!
不好意思哦,这个问题太久了,已经忘了. 我们后面全部转向了electron, 没有再维护nwjs, 建议使用electron哦