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