滚挂:升级新版本遇到的几个BUG

发布时间:

最后更新:

作为一个有追求的码农,自然是要紧跟技术的草榴(潮流)滚动更新!有滚更的地方就有滚挂,挂多了就能水一篇文章了。

这篇文章记录了我遇到的几个第三方代码里的BUG。

Node12的ICU bug #

NodeJS 12 一出,我立马就升级,我的程序立马就崩溃,控制台立马就报出一堆莫名其妙完全看不懂的错误,凭我多年经验立马就感觉不对劲,立马重新滚回11版,整个过程行云流水,仿佛无事发生一样。

当然我还是去GitHub issues里看了下,一进去就发现这个BUG挂在顶上,原来是ICU依赖里出了问题。

从这issue下面大片的引用可以看出这个漏洞影响范围相当广,并且它必定是一个极容易触发的BUG,然而Node社区竟然没能在测试中发现就直接发布真是让我大跌眼镜。

JAVA12的竞争态bug #

JAVA 12 一出,我立马……好的不像上面一段一样废话了,BUG的链接在这里

12这个版本有毒啊,怎么突然好好的,我笔记本的CPU风扇就狂转了起来,吓得我以为有勒索软件正在多线程运行加密算法锁我文件呢,结果发现是我博客后端程跑满了CPU,经一番断点后发现BUG竟然在JAVA自己的库里面,SSLEngine里的一个while循环。

俗话说得好,底层库的一个坑顶你自己的十个,幸好它在我开发机上就蹦了出来,要是在我那垃圾VPS里把CPU跑满,运营商还不得把我鲨了。

gifsicle-bin没有Linux的预编译 #

BUG的链接点我;某次例行的yarn upgrade-interactive --latest之后一切正常,然而当我把代码推到服务器运行时就出了错,一看到日志里的 pre-build test failed 我就懂了,上GitHub issues里看吧。

此坑有点隐蔽,它只在Linux平台出现,其原因是gifsicle-bin新的5.0版本不知道怎么的只有Linux的预编译构建失败(证明Linux有毒),导致其在安装时下载不到,最后yarn install就报错了。

解决办法嘛,当然是回滚咯,package.json里加上个"resolutions": { "gifsicle": "4.0.1" }就好,你让我自己编译那是不存在的。

另外我在搜索时还看到个笨蛋跑到gifsicle本体提issue,哈哈。

Mariadb Python Connector崩溃 #

这个是最近的。

为了拥抱开源,抵制王八壳,我博客的数据库使用了Mariadb,最初Mariadb并没有自己的Python连接库而是一直蹭MySQL的,直到最近我突然看到Mariadb自己的Python库发布1.0版,于是我屁颠屁颠地就把mysql-connector-python给换掉了。

虽然我的py脚本都是纯命令行,但程序一运行就给我弹了个窗:

直接崩溃直接崩溃

好吧毕竟1.0版刚出,有些边界情况没考虑到也很正常,让我看看是哪行代码出了错:

python
import mariadb

connection = mariadb.connect(host=..., port=..., user=..., password=..., database=...)
cursor = connection.cursor()
cursor.execute("SELECT cover FROM article")

for row in cursor:
	...

……这让我说啥好,最基本的语句都能崩溃,看来Mariadb社区的单元测试跟Node有的一拼。

结语 #

本文的四个都是它们代码里自己的bug,滚动更新的坑可远远不止这些,像什么本体发布新版本但DefinedTypes没更新那就太常见了,还有个JAVA编译器的BUG因为没搞清楚原理就不写了。虽然坑多,但也没有必要因噎废食,代码的路上本身就要与无数的BUG战斗嘛。

不过以后我就谨慎多了,先等他几个小版本之后再说,再也不立马升级了( ̄ε(# ̄)

评论加载中