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