VS Code,请还我文件!!!
文?| 羅奇奇
出品 | OSC開源社區(ID:oschina2013)
近日, 用戶?na-an?發現:使用微軟的 VSCode 編輯器打開文件夾時,目錄中會自動生成許多帶有無效代碼的空文件。該用戶隨即在 VSCode GitHub 倉庫中發布了相關 Issue(https://github.com/microsoft/vscode/issues/145297),隨機引發了熱烈討論,很多用戶表示自己也飽受該 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 版本都不存在該問題。
END
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的VS Code,请还我文件!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-csvkit:强大的CSV
- 下一篇: 拿下了一个美女图片网站!