不認2月29?歇菜的可遠不止自動駕駛
今天,2024年2月29日,有消息稱,激光雷達大廠禾賽,遭遇了閏年bug:固件沒處理閏年,凡是用了禾賽激光雷達的車,自動駕駛功能全都歇菜了。 據(jù)“鳳凰網(wǎng)科技”,禾賽已經(jīng)回應:有2個老款L4機械式激光雷達今天出現(xiàn)了軟件bug,問題原因已經(jīng)找到,我們也跟相關客戶都做了深入溝通、并提供了相關解決方案。預計該問題會在24小時內徹底解決。此問題不涉及AT128、不影響OEM客戶,對路上跑的所有搭載AT128的乘用車都無影響。 禾賽的合作廠商,包括理想、長城、路特斯、飛凡等。聲明中特別提及“不受影響”的AT128,則是禾賽的旗艦產(chǎn)品,已搭載在理想L9、路特斯EMEYA等車型上。 圖源:微博截圖 每4年就有一個2月29日,形形色色的閏年日bug總是準時出現(xiàn)。 什么是閏年日Bug?簡單來說,就是在閏年多出來的這一天,由于對日期和時間的計算處理存在錯誤,導致某些系統(tǒng)或設備無法正常工作的問題。這類Bug如果不及時發(fā)現(xiàn)和修復,就可能造成嚴重后果。 圖源:DALL-E 下面幾個真實案例可以幫助我們更好地理解閏年日Bug的危害:
類似的案例還有很多,比如航空公司無法正常登機、售票系統(tǒng)癱瘓、交通設施發(fā)生故障等,嚴重影響著人們的出行和生活。 其實,除了四年一遇的閏年日bug,在手機和電腦上還有其他跟日期有關的奇怪bug,比如—— 世界末日到底是哪一天? 這個無厘頭的問題一直有著各種各樣的離奇答案。當你打開手機系統(tǒng)設置(不是日歷),關閉自動設置時間,往未來的方向滑動數(shù)字時,你會發(fā)現(xiàn)時間停在了2038年。 小米、華為可以設置到2037年12月31日,iPhone也只多兩天 不僅是手機,在電腦上,當你嘗試將時間從2037年再往上調整時,會發(fā)現(xiàn)不管怎么按設置按鈕,日期都不會繼續(xù)改變。 日期調整超過2038年時,會停在2038年1月1日 2038年到底會發(fā)生什么?為什么各種設備都無法“逾越”2038年?在網(wǎng)上搜尋2038,你還能發(fā)現(xiàn)有人專門設置了倒計時網(wǎng)頁。這其中包含了一個更加精確的時間:2038年1月19日 3點14分7秒。而下一秒,你的電子設備將會穿越回到1901年。 著名的“2038問題”,將在此刻爆發(fā)。 到“2038年問題”發(fā)生,還?!?/p> 2038年,時間“摧毀”系統(tǒng) 問題發(fā)生在2038年1月19日 3點14分7秒的下一秒。這一天的03:14:08不會到來,迎接你的將會是1901年12月13日20:45:52。 使用腳本模擬系統(tǒng)時間,會出現(xiàn)時間的跳變(平臺 Debian GNU/Linux (內核 2.4.22))丨William Porquet/deepsky.com 對于很多電子設備而言,這是個毀滅性的打擊。文件的創(chuàng)建與修改、應用軟件的運行、網(wǎng)絡系統(tǒng)的同步……時間作為一個關鍵數(shù)值,在整個電子系統(tǒng)里起著絕對重要的作用。因此有一陣子蘋果手機的語音助手Siri,還把這一天當成了“世界末日”。為什么是這一天?Siri回答中的關鍵詞也給出了答案。 早期Siri對于世界末日問題的回答(新版本系統(tǒng)已無此回答) Unix、32位,這兩個詞讓2038年的這一天注定成為末日。Unix是一種操作系統(tǒng),這種系統(tǒng)中計時方式是以1970年1月1日 00:00:00為基準,按秒為單位進行增減。比如到2022年1月1日0點,只需要用基準值加上1640966400秒。而我們現(xiàn)在使用的安卓、蘋果系統(tǒng)都屬于類Unix系統(tǒng),采用了同樣的方案。 電子系統(tǒng)使用0和1對數(shù)據(jù)進行儲存,也就是二進制。如果只用1位數(shù),只能表示0和1,如果2位數(shù),則可以用00、01、10、11分別表示0、1、2、3這四個數(shù)。隨著位數(shù)的增加,二進制可以表示的數(shù)也越來越大,但總會遇到上限。如果用32個0、1儲存數(shù)字,第一位表示符號,0代表+,1代表-,則剩下31位最大可以表示2147483647。在計算機資源非常寶貴的年代,用32位來放置時間,已經(jīng)很夠用了。 1970年1月1日00:00:00 + 2147483647秒 = 2038年1月19日 3點14分7秒。下一秒,數(shù)據(jù)就會出現(xiàn)“裝不下”的情況,發(fā)生溢出。此時第一位符號位從0變成1,本來的加號變成了減號,時間突然穿越到過去。 從上到下分別是二進制秒數(shù)、對應的十進制秒數(shù)、32位Unix系統(tǒng)時間、實際時間。超過2147483647后,符號位會變成1(負號),整個數(shù)字會突然發(fā)生翻轉,回到1901年。丨Pemu/Wikicommons 這個存在于將來的問題,它會給我們帶來怎樣的影響?回溯過往,一次又一次的“千年蟲”問題已經(jīng)給了我們一些預告。 千年之外的千年蟲 2000年,千禧年。而在很多應用程序看來,這一年會變成1900年。 同樣因為硬件資源寶貴,早期程序使用了年份的后兩位數(shù)字來表示日期,而前兩位數(shù)都默認為19。這個不起眼的時間問題,在整個世界引發(fā)了巨大的關注。政務系統(tǒng)、銀行系統(tǒng)、航空系統(tǒng)等多個系統(tǒng)都可能受到影響而失效。全球各地對這一問題進行了響應,試圖解決這一問題。我國多次發(fā)文強調這一問題的重要性。美國也推出了有關千年蟲問題的法案,以敦促各行業(yè)共享信息解決此類問題。 全球各地對“千年蟲”采取行動丨人民日報網(wǎng)絡版 多虧人們對“千年蟲”的高度重視,使得這一問題在集中爆發(fā)前得以解決。但在此之后,類似“千年蟲”的事件卻依然層出不窮。 2010年的第一周,德國約3千萬張銀行卡同時“失效”。持卡人不僅無法直接刷卡消費,連在自動取款機上取錢都成問題。這不僅影響了本國居民的生活,也使得在外度假的德國人滯留在當?shù)亍?/p> 由于不同編碼方式存在差異,2010在德國的銀行系統(tǒng)中被錯誤地識別成2016。銀行卡也因此“被過期”了。同樣的情況出現(xiàn)在使用Windows Mobile系統(tǒng)的手機上:你在2010年第一天收到的新年短信,會被系統(tǒng)顯示成2016年。 德國加速修復了銀行系統(tǒng),所幸沒有造成更大的損失。但放眼太空,事情就沒那么簡單了。2013年9月,航天器Deep Impact突然失聯(lián),迫使美國航空航天局宣布相關探測任務正式結束。Deep Impact的首席任務科學家 Mike A'Hearn認為,這是一個“千年蟲問題”。航天器的部分軟件無法正確識別2013年8月11日之后的日期,導致計算機不斷重啟。最終,科學家們失去了航天器的信號。 Deep Impact與坦普爾1號彗星相遇模擬圖丨NASA 就在2022年初,“2022年蟲”讓微軟的程序員體會了新年大加班。1月1日,微軟的郵件服務系統(tǒng)Exchange突然中斷,使用該服務的用戶都無法發(fā)送電子郵件。微軟隨后給出了聲明,稱該問題與日期檢查失敗以及新年的變化有關。簡單點說,和2038問題一樣,時間“溢出”了。好在微軟團隊加班加點,在當天解決了該問題。 在未來,“類千年蟲”問題一定還會出現(xiàn)。對于可以預料的問題,人們已經(jīng)開始嘗試提供解決方法。比如使用新的格式存儲時間信息。與此同時,系統(tǒng)團隊提供的新內核也在解決32位平臺上的“歷史問題”。你也不用太擔心,畢竟到那時,你應該已經(jīng)換了好幾波手機了。 不過,再遇到類似的突發(fā)Bug也很正常。因為世界上總在發(fā)生情理之中、意料之外的事情。 轉自網(wǎng)易號https://www.163.com/dy/article/IS54S21F05118OGM.html 該文章在 2024/3/5 15:44:11 編輯過 |
關鍵字查詢
相關文章
正在查詢... |