VS Code 新 Bug:瘋狂創(chuàng)造垃圾文件+自動修改用戶文件
近日, 用戶 na-an 發(fā)現(xiàn):使用微軟的 VSCode 編輯器打開文件夾時,目錄中會自動生成許多帶有無效代碼的空文件。該用戶隨即在 VSCode GitHub 倉庫中發(fā)布了相關 Issue,隨機引發(fā)了熱烈討論,很多用戶表示自己也飽受該 Bug 的困擾。
有些文件名稱很短,有些名稱很長,這些文件的名稱不是有效的 unicode ,比如圖中的 \312\316\361 是八進制。隨機創(chuàng)建的文件似乎來自正在運行的進程內(nèi)存轉(zhuǎn)儲,包含一些通常出現(xiàn)在可執(zhí)行文件中的字符串,看起來像指針出現(xiàn)了堆棧損壞或越界問題。
最可怕的是,除了瘋狂創(chuàng)造空文件外,VSCode 還會隨機修改用戶文件,比如用戶 daantimmer 的所有頭文件的內(nèi)容都被清了,通通變成 0 KB(希望有備份??)
該 Bug 的影響范圍不限于當前的工作區(qū)文件夾,它甚至能清空一些系統(tǒng)文件/文件夾:
該 Bug 在 Windows 和 Linux 等不同系統(tǒng)中都出現(xiàn)過,但受害者有一個非常有趣的共同點:他們都寫 C++ 代碼,并使用 VSCode 的 C++ 擴展。有人嘗試把所有擴展禁用所有擴展后,問題就消失了;如果將 C++ 擴展切換到穩(wěn)定版本(1.8.4),問題也會消失。
如此一來就破案了( issues 9041),原來 Bug 的源頭是 VSCode C++ 擴展 1.9.4 預發(fā)行版本,該版本并不穩(wěn)定,出現(xiàn)了上述的文件系統(tǒng) Bug。但如果用戶勾選了 VSCode 自動更新功能,則會自動更新到預發(fā)行的 C++ 擴展 1.9.4 版本。
然而,C++ 擴展的開發(fā)者也不知道 1.9.4 版本具體到底是哪里出現(xiàn)了問題,該內(nèi)存損壞問題似乎跟 C++ 擴展早已存在,但無法解決的幾個文件損壞 Bug: #4573 和 #5061 有關。目前的推測是 1.9.4 版本意外使用了未初始化的內(nèi)存,由于修改了不遵循現(xiàn)代 C++ 編碼指南的外部第三方子系統(tǒng),可能會阻止或檢測到未初始化指針的使用,指針問題導致出現(xiàn)了一些文件系統(tǒng)的問題。
用戶解決該問題的方法也很簡單,不再安裝 1.9.4 版本的 C++ 擴展即可,1.9.5、1.9.3 、 1.8.4,或是 最新發(fā)布的 1.9.6 版本都不存在該問題。
本文轉(zhuǎn)自OSCHINA
本文標題:VS Code 新 Bug:瘋狂創(chuàng)造垃圾文件+自動修改用戶文件
本文地址:https://www.oschina.net/news/187298/vscode-file-bug