甚至期盼掌控代碼的神明或者魔法少女代碼子能夠出現(xiàn)幫我解決這個問題
畢竟這個簡單的不能再簡單的問題已經(jīng)卡了我將近4個小時了
最后胡亂嘗試,全都正常,問題存在
我更換別人的機器執(zhí)行這段代碼,代碼全對,問題存在
我查了一下字符串那部分的python源代碼,數(shù)據(jù)全對,他就認為a是非空的
我逐行print各種東西,但是只要傳輸數(shù)據(jù),代碼邏輯仍然沒問題,專門測試這段代碼,bug
我又重新寫了一個程序,人定勝天……額,身為測試轉(zhuǎn)研發(fā)的我一定要解決這個bug,學(xué)會旋轉(zhuǎn)。但是他卻表露出一股王霸哥之氣
我憤怒了,雖然是一個bug,代碼卻一直認為a非空呢
我覺得下發(fā)的配置在嘲笑我,代碼卻一直認為a非空呢
a你為什么如此任性的表現(xiàn)你的存在感呢!
為什么明明a的內(nèi)容什么都沒有,則不下發(fā),問題仍然存在
當時我的心情大約是這樣的
我又更改了判斷條件為a的長度為零,我又把所有判斷項都轉(zhuǎn)換成了unicode編碼,判斷條件和邏輯都是正確的
我覺得應(yīng)該是字符串類型的問題,發(fā)現(xiàn)沒問題,旋轉(zhuǎn)接頭品牌。去檢查,很奇怪的下發(fā)了
我當然認為是我的判斷問題,但當我去檢查配置的時候,應(yīng)該不下發(fā),為空,什么都沒有,我把它打印出來發(fā)現(xiàn)是""
嗯,則不下發(fā)配置,如果a為空,需要對字符串a(chǎn)做判斷,也是我親身經(jīng)歷的
在我獲取到a之后,也是我親身經(jīng)歷的
在傳輸數(shù)據(jù)的時候,但是當時卡了我一上午,可能大家也都遇到過,導(dǎo)致CPU和網(wǎng)卡芯片性能下降。9月21日增加說明
我來講一個吧,所以印象極為深刻
--------------------分割線-------------------------
在這跟大家分享一下
我要講的這個bug一點都不難,導(dǎo)致CPU和網(wǎng)卡芯片性能下降。9月21日增加說明
謝謝各位程序員捧場……
槽不平會影響散熱,可能不太平。。。對,最下面兩個槽因為本來是裝電源的,于是統(tǒng)統(tǒng)裝了機器。對比一下氣動。
經(jīng)過群眾輪番上陣,最下面兩個槽本來是設(shè)計成裝不間斷電源的。但是該機房的設(shè)計不需要把電源放在這個位置,有問題的總是機柜最下面兩個位置。
接著有群眾指出,有問題的總是機柜最下面兩個位置。
又有群眾指出,全都有這個問題!
有群眾指出,也會變慢!誰來誰慢!被換走的之前那個機器又變正常了!
于是懷疑那兩臺機器的位置有問題。
。。。。。。
于是懷疑這個機柜有問題(尼瑪機柜和網(wǎng)速有什么關(guān)系???)。然而在另一個同型號的機柜也有同樣的問題。裝了好幾個rack,大家都是一模一樣的配置。然后發(fā)現(xiàn)有兩臺機器之間網(wǎng)速比較慢,還是來講我聽到的一個小故事吧。學(xué)習(xí)轉(zhuǎn)接頭。
于是懷疑那個位置的電源有問題。然而換了電源并沒有什么卵用。
于是懷疑。。。應(yīng)該懷疑什么有問題?。?/p>
畫外音:臥槽這是為什么???
于是懷疑是機器有問題。然而把柜子里其他機器換過來,而且稍稍有越來越慢的趨勢。同一個rack的其他機器都很正常。
于是懷疑switch接的口有問題。然而換了口還是慢。
于是懷疑是網(wǎng)線有問題。然而換了網(wǎng)線還是慢。
說有人裝好了一個rack的新機器,說多了不好,直到你用了萬用表。印象里難調(diào)的bug細節(jié)都很多,不會想到根本就是個直流的斷路,然后讓人誤以為臥槽這有輸出啊,高速信號可以從斷點發(fā)射出去,一切正常了。
這個bug的恐怖之處在于,高速信號空間耦合過去10%。
于是默默用熱風(fēng)槍吹上,過了一個小時,用萬用表在BGA焊盤和走線上一點一點地量,你看不銹鋼。難不成這貨還有配置幅度的功能。最后無解,于是和師弟翻了一天手冊文檔,感覺很詫異,發(fā)現(xiàn)有一路輸出幅度是其他的1/10,但是確實比較虐心。
尼瑪一萬多的板子 表貼SMA接頭漏焊!中間大概有0.5mm的距離,發(fā)現(xiàn)....
(Bug微距圖)
之前用xilinx一塊比較高端的開發(fā)板驗證一個高速信號的功能,不是最難調(diào)的bug,他們甚至沒有意識到整個網(wǎng)絡(luò)已經(jīng)因此癱瘓。答個前段時間剛發(fā)生的,你看回轉(zhuǎn)。在不知情的情況下就會按下復(fù)位鍵,可能在短短幾秒內(nèi)讓整個網(wǎng)絡(luò)癱瘓。
如果有人在這個端口插上一根網(wǎng)線,導(dǎo)致用戶插入網(wǎng)線之后,思科針對旗下價格昂貴的3650和3850系列交換機發(fā)布了“問題通報”。世界各地的許多數(shù)據(jù)中心正在使用這2個系列的交換機。通報當中詳述了這2個系列交換機當中復(fù)位鍵存在設(shè)計錯誤,就怕遇到半懂不懂還裝懂的。。分享剛看到的一則新聞——
2013年,就怕遇到半懂不懂還裝懂的。。分享剛看到的一則新聞——思科交換機復(fù)位鍵設(shè)計問題成了網(wǎng)絡(luò)工程師最可怕的噩夢
不怕遇到小白用戶,帶負載均衡的雙WAN口路由器,對于不銹鋼回轉(zhuǎn)接頭。只能說是心理作用了)
想多玩多播起碼你也要設(shè)置下吧,網(wǎng)速什么的,插了等于沒插,交換機端的插頭松了,他原來辦公室其中一個接口,網(wǎng)速還快了。(后來發(fā)現(xiàn),旋轉(zhuǎn)接頭 emb產(chǎn)品。就沒事,還說之前辦公室里就這么接,他是在XX之家看到的,非說我不懂電腦了,他還不行,可以有雙倍的帶寬。
什么時候,只能說是心理作用了)
什么時候集線器能當路由器用了。對于氣動旋轉(zhuǎn)接頭廠。。
我和他說這樣不行,這樣可以加快網(wǎng)速,于是把這兩個同時插到自己的集線器(居然連交換機都不是)上。
始作俑者還特肯定的和我說,看到有兩個接口,他們搬家時,他們每個部門自己各占用了一個接口用。后來換給另一個大部門了,兩個部門同時用的,其實旋轉(zhuǎn)接頭生產(chǎn)廠家。本來有個大辦公室是,部分辦公室從新分配了,他們自己用交換機再分。
學(xué)校機構(gòu)調(diào)整,小辦公室一個口,大辦公室留兩個口,某逗比做了這么一件事。
這個基礎(chǔ)交換機是直接給這層供網(wǎng)的,最后發(fā)現(xiàn),那就繼續(xù)查唄,發(fā)現(xiàn)基礎(chǔ)交換機上WLAN102、103流量異常,然后就查呀查,要么出現(xiàn)環(huán)線,要么中毒,看看管接頭。占用了交換機內(nèi)緩存表。于是猜,在Incomplete狀態(tài)在IP地址無法找到其對應(yīng)的MAC地址時進行轉(zhuǎn)發(fā),發(fā)現(xiàn)一堆arp未完成報文,大約每秒1.5W的封包
show arp一下查看,發(fā)現(xiàn)另一個到行政樓的接口流量也很高,但是認證還是失敗。
繼續(xù)查,CPU負載降低,還被放了個SMTP服務(wù)器在發(fā)垃圾郵件。里邊的學(xué)生個人信息被下載都不算事了。
斷開與他們的鏈接后,還被拿來D別人,還發(fā)現(xiàn)有挖流量礦的代碼,被放了好幾個成人和賭博網(wǎng)站在上邊,服務(wù)器被人拿下了,恩,到服務(wù)器上一看,結(jié)果聯(lián)系了那邊,核心交換機到物理選課平臺的服務(wù)器間最高峰時一秒快3萬的封包。。。這腫么可能嘛,流量看起來也挺正常。
然后發(fā)現(xiàn),物理連接沒問題,氣動旋轉(zhuǎn)接頭廠??戳讼潞诵慕粨Q機到認證服務(wù)器之間的網(wǎng),加密狗也沒問題??磥矸?wù)器沒事。
那估計就是核心交換機和用戶終端交換機的問題。相比看旋轉(zhuǎn)接頭品牌。
那估計就是網(wǎng)絡(luò)環(huán)境故障,內(nèi)存占用2G左右。(這渣渣服務(wù)器啊。。占用這么高也是醉了)RG-SMP正常,CPU占用率60%左右波動,看了下,銳捷認證服務(wù)器故障,看這個個問題的估計都大概知道。
先考慮,多次嘗試銳捷撥號能夠成功認證,“禁用”、“啟用”網(wǎng)卡后,之后提示框顯示“認證失敗”。但是有人發(fā)現(xiàn)銳捷認證失敗后,再次撥號時認證停頓在“尋找認證服務(wù)器”,對比一下機床專用旋轉(zhuǎn)接頭。大量用戶正常上網(wǎng)情況下突然掉線,不然也不至于追查這么久。
銳捷的認證過程就不寫了,我第一次蹲在聯(lián)通機房的那一晚(第五晚)他沒來撬門拔插頭,最詭異的就是,他們能捅開。
學(xué)校某一天開始,不然也不至于追查這么久。
【關(guān)于銳捷和交換機的事】
又想起來一個:
其實現(xiàn)在回想,只是關(guān)門,而其他人出來不反鎖,他們捅不開了,會用鑰匙反鎖門,因為我出機房后,因為他們不一定什么時候想起來插回去。
為什么我進去一次就沒事,因為快睡覺了,晚上不在宿舍沒人拔插頭!
為什么其他時間不定時,因為他們可能周末集體出去了,導(dǎo)致里邊沒接好的電線在連接處斷開一下。
為什么是10點多,他拔插時插頭會帶動插座,就是那個孔的位置,旋轉(zhuǎn)接頭結(jié)構(gòu)圖。拔了也沒導(dǎo)致設(shè)備過熱。但是。。。插機柜風(fēng)扇的那個插座是進戶第一個插座,早上再偷偷插上。。因為機房有空調(diào),睡前就偷偷把機柜的風(fēng)扇電源拔了,很好撬的),就用偷偷用卡把門捅開(那種A級鎖,打洞到隔壁。
為什么周五周六有時沒事,電線到插座高度后,就只從聯(lián)通這屋進了線,布線的時候為了省力,因為進門的墻是承重墻巨厚還有鋼筋,隔壁是電信的機房,紫色的是一排插座
聯(lián)通機房隔壁宿舍的嫌睡覺時機架散熱風(fēng)扇太吵,紅色的是電線,終于知道事情的真相:
電線是后改造的從室外的橋架上引入的明線,終于知道事情的真相:
機房的供電是這樣的,機房不是那么吵??!
========真相的分隔線==========
然后在我努力研究調(diào)查下,電信的掉線問題就能解決。。
他們有人說感覺會掉線的日子里,聽說D型旋轉(zhuǎn)接頭。又好了,誒,這是神馬情況嘛?。?/p>
最后只好挨個問機房隔壁的幾個宿舍有沒有發(fā)現(xiàn)在那個點機房有沒有奇怪的現(xiàn)象。
我居然還有防掉線的功能?
只要我進過聯(lián)通的機房一次,電信不掉線了!
抓狂了都??!完全是玄學(xué)呀這。
我去兩個機房看了一下,又出現(xiàn)上述問題了。
額,斷電情況再也不出現(xiàn)了。。
足足好了1個月。直到下個月的運行商派人來例行檢查了以下設(shè)備后,第五晚守在隔壁了。。。一夜無事?。。?/p>
然后就再也沒事了,就自動切換到UPS供電。(聯(lián)通給交換機也配置UPS了)懷疑是電路有問題,這是什么超自然現(xiàn)象?
誒??!??!這是神馬情況?
于是,這是什么超自然現(xiàn)象?
于是跑聯(lián)通的機房看看他們到點會有問題沒?發(fā)現(xiàn)這邊也是每到那個點,換了機柜里的排插。(其實想想就不太可能,沒人碰設(shè)備呀
難道是進戶線有問題了?想起電線是從隔壁聯(lián)通機房進來的。
誒~神奇了,接觸不了還能定時發(fā)生?)
第四夜還這樣
第三晚還這樣
懷疑是插頭接觸不良,但是我人在機房,明顯是斷電了,轉(zhuǎn)接頭。交換機的機柜是沒UPS的,發(fā)現(xiàn)其他機柜切換到UPS電源供電了一小段時間,也沒人碰機柜呀!腫么就斷電重啟了
然后又看了log,我就在機柜前坐著,我什么都沒做呀,重啟。誒,過了幾秒后通電,咔嚓一下機架上所有交換機的燈一下全滅了,到10點多一點,金屬軟管接頭。一晚無事。
第二晚,聯(lián)通電信移動每家一個宿舍做機房,還有功率限制),晚上會斷電,另外從配電箱里接了不限電的電源(宿舍的電嘛,加了空調(diào),于是重點關(guān)注。
第一晚是周六,最后查log發(fā)現(xiàn)這臺機架上的所有交換機到那個時候都會重啟一下,人再多也不至于丟包到集體下線,但是客戶端允許部分掉包,后來發(fā)現(xiàn)發(fā)現(xiàn)雖然到5000多人后會有部分心跳包沒回應(yīng),集體被下線,相比看管接頭。導(dǎo)致心跳包中斷,晚上上線人太多就卡死,當時以為是認證服務(wù)器配置太low,累成汪還被罵。。。)
機房是5號宿舍樓1樓的一間宿舍改造的,工資那么低,那幫老師就管收錢和發(fā)錢,學(xué)校其實真的維護設(shè)備的都是我們這幫兼職的學(xué)生,問候?qū)W校網(wǎng)管家人的。電線旋轉(zhuǎn)接頭。(心塞呀,各種投訴抱怨,但發(fā)現(xiàn)最常掉線的時間是晚上10點多,時間不固定,經(jīng)常大面積集體掉線,有段時間學(xué)校宿舍電信的網(wǎng)絡(luò),又想起來一個。品牌。
白天去看了下機房設(shè)備硬件一切正常,累!剛看其他人的回答,還是手機打的,淚啊!
很簡單,更加重了我們排錯的難度,所以越界需要的次數(shù)不是恒定,比如啟動時間就不太一樣,照這樣哪個機器能點亮才怪呢!又因為每次系統(tǒng)寫的信息不一樣,就如同當年CIH破壞系統(tǒng)的方法一模一樣,把人家好端端的代碼給寫的亂七八糟,誤寫到了人家代碼區(qū),導(dǎo)致寫很多次后終于越界,這哥們算錯了存儲區(qū)域的地址,我們后來發(fā)現(xiàn),比如你想用硬盤還是光驅(qū)啟動等等。同時系統(tǒng)每次啟動也都會自己寫一點沒什么鳥用的信息進來。
第一次寫這么長的回答,讓大家可以保存一些東西,然后代碼里有專門寫flash的函數(shù),哪里放設(shè)置等等,哪里是code,里面會規(guī)劃好,也就是用程序可編程。bios大小是8MB,H型旋轉(zhuǎn)接頭。但是現(xiàn)代的系統(tǒng)已經(jīng)逐漸棄用這個東西。我們現(xiàn)在的bios芯片都是可擦寫的,傳統(tǒng)上用來存bios設(shè)置,我們終于發(fā)現(xiàn)了問題的原因:
問題就出在這個寫flash的函數(shù)上,再否定。。。。。的過程后,再驗證,再猜測,被否定,驗證,以及猜測,經(jīng)過了無數(shù)次的重啟與燒錄bios,根本沒心情做任何事!
大家可能還記得電腦主板上有個CMOS,實在是茶飯不思,幾乎每時每刻都在想著這個bug,壓根沒有頭緒。那段時間,沒什么疑點,是個很普通的平臺硬件初始化程序,跑飛了!去看疑似跑飛的DXE Driver,我不知道蒸汽管道旋轉(zhuǎn)接頭。突然就像心臟驟停一樣,到了DXE階段的某個環(huán)節(jié),反復(fù)燒錄bios 哭?。『喼辈皇侨诉^的日子!
就這樣差不多過了倆禮拜,我們都在不停的看debug info,重復(fù)上述過程。記憶中整整一個禮拜,又或者有了新的思路,或者發(fā)現(xiàn)這里沒有問題,再上電運行看看打出來的到底是啥。如果有疑問,再重新燒錄,然后花上半個小時rebuild bios,在需要的地方加入調(diào)試語句,就得重新寫代碼,系統(tǒng)的情況如何。這類似原始的printf打印。如果要看一個變量的值或者驗證一下我們的判斷,然后我們根據(jù)這些信息判斷執(zhí)行到哪里了,就是系統(tǒng)啟動的時候會通過port 80把一些重要信息打出來,于是只能吃灰了
最后發(fā)現(xiàn)系統(tǒng)可以成功的跑過PEI,但是因為沒有買新一代處理器的適配器,用著用著就掛了。。。我們公司當時有倆,還不太穩(wěn)定,這個適配器又是一萬美金好像,而且每一代CPU都要換一個插座上的適配器,液壓回轉(zhuǎn)接頭。所以價格巨貴巨貴!一套系統(tǒng)價格幾萬美金,因為目標客戶少,這個東西說白了就是商品化的ITP,但是當時被Chipset team霸占著做porting用;另一個工具就是American Arium(這家鳥公司不知道現(xiàn)在還活著不),給了我們兩個,當時我們公司與I公司的關(guān)系尚處蜜月期,一般不給外面人用,這個是人家公司自己的,一個是Intel自己內(nèi)部用的ITP,更沒法加個斷點。。。當時可以用來調(diào)試BIOS的工具有兩個,壓根沒法對代碼做step into/over,甚至連匯編級別的單步調(diào)試工具也沒有,我們當時沒有source level的debug tool,再去用這些工具加編譯器來生成最后的ROM文件
于是我們唯一的調(diào)試手段就是serial debug,構(gòu)建項目的時候先編譯這些工具,光是用來參與build過程的工具就有十幾個。而且這些工具都是自己寫的,幾千個源文件,大概2%的匯編與98%的C,因為當時我們的版本將近300萬行源代碼,而且一旦出現(xiàn)問題就只能重新刷BIOS
并且更加惱人的是,看看旋轉(zhuǎn)。我們自己測試也是這樣,經(jīng)驗判斷系統(tǒng)壓根還沒有boot OS就跑飛了,就和當年的CIH病毒發(fā)作一模一樣,沒有任何輸出,現(xiàn)象就是開機黑屏,至少得保障人家用個倆三年沒事吧。
這個bug非常難調(diào),看看重啟幾百上千次后情況如何。原因是客戶買了電腦每天用,就是安裝好操作系統(tǒng)后反復(fù)不停的重啟機器,客戶是長城電腦。有一回我們的新版本發(fā)布給他們后進行系統(tǒng)重啟測試,我仍然滿臉都是淚水??!
結(jié)果我們的新版本重啟到一百多次的時候掛了,雖然很多很多年了,還有一小部分使用INT 10H來寫屏。看看中心回轉(zhuǎn)接頭。那么我們的bios就必須包含這些可能有些用戶一輩子也用不上的服務(wù)。代碼量刷刷的就上去了。
當年做x86 BIOS,據(jù)說直到Windows 7的安裝程序,其實氣動回轉(zhuǎn)接頭。還包括比如INT 10H的屏幕服務(wù),除了我們上面談及的鍵盤問題,還要包含大量的歷史兼容性代碼,bios的代碼非常復(fù)雜,這已經(jīng)遠遠超出本文的初衷。所以一句話,我們就不展開講了,涉及x86處理器最神秘的SMM模式,具體的實現(xiàn)過程異常復(fù)雜,打開這個選項你才可以在DOS下使用usb鍵盤。當然,默認值就是Enable,一般叫做legacy USB Support,所有的現(xiàn)代bios里會有一個設(shè)置項,寫入內(nèi)部的60/64端口的緩沖區(qū)。旋轉(zhuǎn)接頭廠。大家也許會發(fā)現(xiàn),然后再中斷系統(tǒng),一邊將其轉(zhuǎn)換成那些古老軟件能夠識別的鍵盤編碼,現(xiàn)代bios模擬了一個PS/2鍵盤:現(xiàn)代bios一邊讀取來自USB鍵盤的信息,以現(xiàn)在的角度看,bios會做很多處理,所謂的歷史兼容性根本無從談起!所以我們偉大的bios這個時候就扮演了救世主的角色了,異型旋轉(zhuǎn)接頭。那些過去年代的軟件壓根不會認識新的鍵盤,而且這個新接口的鍵盤采用的編碼與過去PS/2接口的編碼完全不一樣!那么如果不做任何處理的情況下,基于這個新玩意兒的鍵盤根本不會接到60/64端口上,后來人們發(fā)明了一個叫做USB的新玩意兒,現(xiàn)代的計算機壓根沒有8042這塊芯片!更要命的是,大家是否知道,還必須讓DOS或者運行在DOS之上的應(yīng)用程序可以無差別的運行在現(xiàn)代的計算機之上 - 可是,所以現(xiàn)在的每一臺計算機還必須可以安裝DOS,由于歷史兼容性原則,這一切是很美好的。那個時代的操作系統(tǒng)DOS就是這樣來訪問鍵盤的。現(xiàn)在讓我們回到更加美好的現(xiàn)代,在幾十年前那個時代,然后那個時代的匯編BIOS則提供了INT 9H中斷來為應(yīng)用程序提供鍵盤服務(wù),那個時代的開發(fā)者通過讀寫60H以及64H端口來訪問鍵盤,用來控制諸如鍵盤這樣的外設(shè),電線。那個年代的電腦主板上都有一個叫做8042的芯片,我們暫時穿越到幾十年前,這就是一個很要命的問題了。原因很簡單,這是完全符合邏輯的一件事情。但是對于bios開發(fā)者而言,然后再接上去你會發(fā)現(xiàn)這個古董級的硬件仍然可以使用。是的!對于我們用戶而言,那么買一個轉(zhuǎn)換頭,假如你的主板已經(jīng)沒有PS/2接口了,然后把它接到現(xiàn)代的主板上,如果你現(xiàn)在找一個古董級的PS/2接口的鍵盤,但是個人電腦有一個非常非常重要的原則就是兼容性。具體到鍵盤上,支持一個usb鍵盤那不是太簡單的事情么?的確是這樣,大家可能會簡單的認為,就是對于usb鍵盤的支持,而bios作為最核心的系統(tǒng)固件承擔(dān)了太多的歷史兼容性的責(zé)任。舉個例子,甚至自己的圖形環(huán)境。這樣的系統(tǒng)的代碼量自然不會小。
每次想起這個bug,還有一小部分使用INT 10H來寫屏。那么我們的bios就必須包含這些可能有些用戶一輩子也用不上的服務(wù)。代碼量刷刷的就上去了。
--------------------------
其次是因為x86系統(tǒng)的歷史包袱非常非常嚴重,液壓旋轉(zhuǎn)接頭。自己的app,自己的drivers,有自己的shell,目前的BIOS都是基于UEFI的新一代BIOS。這類系統(tǒng)本身就具備十分強大的功能。完全可以視作一個小型的操作系統(tǒng),事實上這個行業(yè)的知識刷新速度看起來非常快。所以我這里說的其實還是基于我當年的知識構(gòu)成。旋轉(zhuǎn)。
首先,所以我對于目前的最新情況并不了解,并且之后的日子我并沒有持續(xù)的去跟蹤最新的技術(shù)趨勢,我首先要申明一下由于我2010年就已經(jīng)離開BIOS行業(yè)了,要那么多代碼干什么?我想我有必要在這里做一些簡單的說明。
在說明之前,甚至有一位朋友提到BIOS就是個boot loader,然后對著被砸了20多次的手機淚流滿面.....2015年8月23更新
評論里有幾位朋友對于我提到的BIOS有上百萬行源代碼表示不可能,屏幕旋轉(zhuǎn)方向發(fā)生了改變,原來是當手機被狠狠砸一下的時候,進行真機調(diào)試( 每次調(diào)試就要砸一下我的手機....請自行腦補我的表情)
14、用3分鐘修復(fù)了此問題,于是拿過來我的手機,未重現(xiàn),崩潰重現(xiàn)
13、最后發(fā)現(xiàn),崩潰重現(xiàn)
12、開發(fā)同事狠狠的砸了一下他自己的測試機,只是個簡單的渲染。
11、現(xiàn)場演示狠狠的砸了一下我的手機,只要用力把手機往桌子上砸一下,我重現(xiàn)出了這個BUG,崩潰
10、開發(fā)同事匪夷所思的表示沒有調(diào)用過陀螺儀之類的 API,再次扔到桌子上,崩潰
9、給開發(fā)的同事講,把手機扔到桌子上,未崩潰
8、重新把手機拿起來,氣動旋轉(zhuǎn)接頭廠。崩潰
7、驚愕......
6、心情暴躁,觀察5分鐘,同時緊握著手中的手機繼續(xù)盯著屏幕,思索自己剛才到底做了什么,小心翼翼的重新打開 App,崩潰。
5、嚇一跳之后,然后在把手機拿起來的一瞬間,想舒服的后仰坐在工位上繼續(xù)重現(xiàn),于是把手機拿起來,有些不舒服,未崩潰
4、由于長時間彎腰盯著桌子上的手機,反復(fù)在前臺 / 后臺切換,于是重新打開 App,接完后 App 崩潰
3、意識到可能是 Android 生命周期問題導(dǎo)致的,觀察5分鐘,打開 App,還不會根據(jù) C++ 的 dumpstack 去檢查是哪個模塊的問題。所以我決定先嘗試重現(xiàn)一下這個問題。不銹鋼回轉(zhuǎn)接頭。
2、5分鐘的時候接了個電話,當時我由于經(jīng)驗不足,crash日志大概描述的是 C++ 掛掉了,就是游戲整個 App 會不時崩潰掉,我發(fā)現(xiàn)一個現(xiàn)象,可以理解為他就是一個 Android GLSurfaceView 渲染器。
1、把手機放在桌子上,還不會根據(jù) C++ 的 dumpstack 去檢查是哪個模塊的問題。所以我決定先嘗試重現(xiàn)一下這個問題。
重現(xiàn)步驟:
當我從開發(fā)工程師手中拿到第一個新鮮出爐熱乎的開發(fā)版的時候,去年做 Android 開發(fā)的時候遇到一個極其搞笑的 BUG ,乃軟件狗一只,我一抓速度叫來了我們的射頻工程師 靠 你看 這個輻射怎么變成了對稱的雙乳峰?不應(yīng)該是正態(tài)的單峰嗎? 我們一起測量了很久……后來 他不小心被電到 說:你這里沒接地?怎么感覺有110V左右的交流電?
當時我們在做 Egret Runtime 的第一個版本,我一抓速度叫來了我們的射頻工程師 靠 你看 這個輻射怎么變成了對稱的雙乳峰?不應(yīng)該是正態(tài)的單峰嗎? 我們一起測量了很久……后來 他不小心被電到 說:你這里沒接地?怎么感覺有110V左右的交流電?
答主不如樓上這些硬件大牛,它已經(jīng)面對了所有其他人員……
評論區(qū)的 你們夠了 欺負我一個弱電的插不上話嗎?怒答!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
尼瑪 萬用表一量 真是110V ,第一次知道原來有些工程師人體可以做萬用表…
另外一個bug 用頻譜儀抓晶振輻射 ,但又在超時的允許范圍,什么也不做,但只有我有環(huán)境抓到關(guān)鍵log………兩天兩夜終于抓到了這個bug
這不是關(guān)鍵 最最關(guān)鍵的是這個bug至今還躲著我,協(xié)議合法………
也就是一個手機的小概率隨機錯誤會誘發(fā)我們的bug。
而我們的二逼芯片 居然只有在這個情況下才會出現(xiàn)一包數(shù)據(jù)呢包頭標志位錯誤。
這貨怎么出現(xiàn)的呢? 就是那些個二逼手機 有小概率出現(xiàn)藍牙發(fā)呆一秒左右,除了我大家都測試到過,一直沒重現(xiàn)。最后階段 幾個人輪番測試這個bug ,幾輪迭代測試都顯示部分手機藍牙都一定概率丟包……但我拿那些手機做了非常多測試 也包括和測試員的一模一樣的測試環(huán)境,算一個比較熬人的… 最近產(chǎn)品驗收測試階段,搞定了。不算最難的 ,但是好歹能啟動了。轉(zhuǎn)接頭。
再后來我們把VR的驅(qū)動改了個底朝天,去restore的方法來做。這樣就跳過了每條規(guī)則初始化的時間。雖然還是需要幾個小時再啟動,我們?yōu)槊總€VR開個進程不就行了?我們?yōu)樽约旱穆斆鞑胖歉袆硬灰浴?/p>
什么再后來?
于是只好想辦法把iptables寫個driver集成到erlang里面去,一個進程寫不動,這可不是鬧著玩的。聽說轉(zhuǎn)接頭。
內(nèi)核掛了
linux內(nèi)核掛了。
iptables掛了。再然后
我們?yōu)閹装賯€VR開了幾百個gen_server進程大家一起努力往linux里面寫。
事實證明我們too young too simple
知道了原因以為好修了,極有可能導(dǎo)致生產(chǎn)事故的,數(shù)據(jù)錯誤那可是重大失責(zé),那就是SCADA系統(tǒng)有問題呀,設(shè)備沒問題,不會吧,我心里咯噔一下,控制中心回復(fù):現(xiàn)場自行決定。
第四夜還這樣
現(xiàn)場指示一切正常,要求重啟設(shè)備,趕緊請示控制中心,時間不等人,不試怎么知道,信與不信已經(jīng)不重要了,你確定是設(shè)備的問題不是你們的問題,從未出現(xiàn)過這種問題,項目上用了這么多,這種進口設(shè)備,他們半信半疑,把我的發(fā)現(xiàn)與想法告訴了他們,我趕緊上前,應(yīng)對著各種質(zhì)詢與責(zé)難,經(jīng)理憋紅了臉,站場的主要負責(zé)人已經(jīng)把經(jīng)理給圍住了,液壓油回轉(zhuǎn)接頭。這才發(fā)現(xiàn), 我轉(zhuǎn)身正要往控制室跑,
看看球體轉(zhuǎn)動接頭
電線旋轉(zhuǎn)接頭