久久久国产精品x99av_国产日韩在线视频_中文av在线播放_色狠狠色狠狠综合_欧美高清视频在线观看mv_亚洲国产毛片aaaaa无费看_欧美一区二区少妇_亚洲一区在线视频_传媒视频在线_日本一区二区动态图_无码人妻精品一区二区三区99v_欧美黄免费看

 

基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-LWIP的堆(內(nèi)存池)未對齊導(dǎo)致問題的案例分享

發(fā)布時間:2023-09-09 08:38:33  |  來源:面包芯語  

一.前言

內(nèi)存未對齊訪問問題這個已經(jīng)是老生常談的問題了, 由于LWIP的堆管理中也用到了地址(指針)強制轉(zhuǎn)換所以也會遇到這個問題。對于老手比較容易發(fā)現(xiàn),對于新手可能會比較疑惑。所以也單獨分享一個案例吧,權(quán)當一個小的check list的case。

二.問題

Lwipopts.h中MEM_ALIGNMENT可以配置堆對齊大小,有問題時是配置為1

#define MEM_ALIGNMENT 1U


(資料圖)

異常時打印寄存器如下,當然不同平臺異常時如何獲取上下文信息方式不一樣,不在本文討論范圍內(nèi),我這里是RISC-V環(huán)境。

看到打印的mepc是0x20006C88,異常原因是地址未對齊。

所以是在運行0x20006C88時進入了異常,當然這個地方不一定是原始問題所在點,異常可能是跑了很久才出現(xiàn)的。

所以先在這里打個斷點試試

可以看到是pbuf.c的代碼中,所以可以懷疑是內(nèi)存池或者堆的問題。

我們運行發(fā)現(xiàn)斷點并不能觸發(fā),之前就已經(jīng)異常了,所以只能跟代碼逐漸縮小范圍確認問題的。一般采用的方式是,逐步斷點或者打印或者刪除代碼,逐步縮小范圍的方法。

可以借鑒一些二分的思想,加快定位。

這里還是從pbuf開始,先找到相關(guān)代碼上層函數(shù)處,斷點

b pbuf_init_alloced_pbuf

看到異常前是可以停下來的

看到此時p的值是0x28201406

查看如下匯編代碼可知

sw zero,0(a0)即對應(yīng)代碼p->next = NULL;

sw是word操作指令,但是地址a0不是word對齊,所以會產(chǎn)生異常

再si單步確實進入異常

所以問題確認了。

因為堆是分配的一塊區(qū)域,每一塊區(qū)域的開始地址對齊值就是上面設(shè)置的對齊大小,分配區(qū)塊后作為其他模塊使用,比如pbuf使用,前面部分作為管理結(jié)構(gòu)體

struct pbuf 操作,所以實際是將一個區(qū)塊地址強制轉(zhuǎn)為了結(jié)構(gòu)體指針。

此時訪問結(jié)構(gòu)體成員,編譯器是自動按照自然對齊生成匯編指令的,因為編譯器并不知道你的對齊要求,所以如果系統(tǒng)不支持對應(yīng)的指令非對其訪問就有問題,但是有些系統(tǒng)對應(yīng)的匯編指令的行為支持不對齊訪問那么就沒有問題。

當然出于可靠性設(shè)計,建議不要進行強制類型轉(zhuǎn)換,比如MISRA標準里的規(guī)范就是如此。

如果代碼要做到兼容性可靠性非常好就要注意這個問題,此時不能使用強制類型轉(zhuǎn)換,而是使用字節(jié)序手動拼接得到成員的值。

但是出于靈活性考慮,很多協(xié)議棧的設(shè)計都是直接使用強制類型轉(zhuǎn)換的,所以這時用戶就需要注意,比如這里我們可以配置#define MEM_ALIGNMENT 4U

來保證上述分配出來的地址p是4字節(jié)對齊的,所以按照偏移,其成員也是4字節(jié)對齊的,sw指令操作的就是4字節(jié)對齊的成員,就不會有問題。

三.總結(jié)

以上分享一個簡單的案例,目的是提醒下要注意類似問題,尤其有指針強制類型轉(zhuǎn)換的要注意對齊問題。問題不難,也不復(fù)雜,但是可以作為check list的case可以作為檢查項目。

關(guān)鍵詞:

 

最近更新

亚洲综合av影视| 黄色91av| 在线免费观看黄色网址| 97超碰人人看人人| 亚洲永久免费av| 影音先锋欧美在线| 国产一区二区三区久久久久久久久| 7m精品福利视频导航| 四虎国产精品免费久久5151| 亚洲国产成人久久综合| 天堂中文а√在线| 日韩欧美国产免费播放| 在线看三级网站视频| 国产精品国产精品国产专区不蜜| 日韩av三级在线| 粉嫩一区二区三区性色av| 日韩欧美亚洲v片| 久久aⅴ乱码一区二区三区| 91亚洲人电影| 香蕉视频官网在线观看日本一区二区| 欧美伊久线香蕉线新在线| 加勒比久久高清| 97在线看免费观看视频在线观看| 视频一区中文字幕精品| 久久婷婷国产麻豆91天堂| 日韩一区二区三区在线免费观看| 亚洲第一网站免费视频| 天堂av资源在线观看| 欧美不卡一区二区三区四区| 欧美人与性动交α欧美精品图片| 欧美成人精品二区三区99精品| 蜜桃视频在线观看www社区| 欧美午夜电影一区| 99久久精品免费观看国产| 日韩欧美黄色影院| 大桥未久在线视频| 国产亚洲精品久久| 国产一区二区| 热久久99这里有精品| 日韩成人精品一区| 国产一级二级三级精品| 天堂一区二区在线| 国产尤物av一区二区三区| 26uuu国产电影一区二区| 天堂网在线免费观看| 亚洲国产欧美日韩另类综合 | 牛牛国产精品| 久久99国产精品| 美腿丝袜亚洲综合| 99爱视频在线| 亚洲综合在线第一页| 成人三级黄色免费网站| 精品国产免费人成在线观看| 黄色成人小视频| 欧美专区在线播放| 综合久久99| 一区二区三区视频| av在线不卡网| 欧美xxxxxxxxx59| 欧美电影一区二区| www.成人| 91欧美视频网站| 久久99九九99精品| 香蕉521av成人网| 欧美人妖巨大在线| 97久久网站| 国产日韩精品入口| 久久国产乱子精品免费女| 亚洲男人天堂色| 欧美午夜在线观看| 成人在线日韩| 国产高清一区视频| 97成人超碰视| 懂色一区二区三区| 最好看的2019年中文视频| 欧美日韩有码| 2021狠狠干| 黑人巨大精品欧美一区二区免费| 性欧美18xxxhd| 午夜精品免费视频| 亚洲欧美日本日韩| 缴情综合网五月天| 日韩欧美中文一区二区| 亚洲人成网77777色在线播放| 日本一区二区在线视频观看| 国产精品亲子伦对白| 中文字幕中文字幕在线十八区 | 欧美中文在线视频| 久久国产主播| 米奇.777.com| 精品夜色国产国偷在线| 啪啪亚洲精品| 男女猛烈激情xx00免费视频| 91久久精品网| 国语一区二区三区| 综合久久国产| 色综合天天综合网国产成人综合天| 欧美成人app| 国产一区不卡在线观看| 国产精品色在线| 国产污视频在线播放| 国产一区玩具在线观看| 国产美女视频91| 成人性爱视频在线观看| 51ⅴ精品国产91久久久久久| 精东粉嫩av免费一区二区三区| 日韩av免费观影| 欧美在线观看网址综合| 波多野结衣中文一区| sqte在线播放| 国产亚洲欧美一区二区三区| 一区二区高清免费观看影视大全| 黄色成人在线观看网站| 视频一区三区| 91久久精品一区二区二区| 蜜桃成人av| 99riav视频| 欧美xxxx18国产| 成人精品国产免费网站| 日韩精品av| 色播五月综合| 欧美久久久久久久久| 日韩欧美精品综合| 另类小说第一页| zzijzzij亚洲日本成熟少妇| 激情综合五月天| 日本伦理一区二区| 国产亚洲欧美一区二区 | 午夜av成人| 亚洲乱码一区二区三区| 91精品午夜视频| 欧美性久久久| 蜜桃视频在线播放| 91香蕉电影院| 香港成人在线视频| av一区二区在线播放| 性视频在线播放| 国产精品免费小视频| 亚洲电影中文字幕在线观看| 欧美美女视频| 中文在线资源在线| 热re99久久精品国产66热| 国产精品免费久久久久| 激情小说一区| 蜜桃视频网站www| 国产精品高清网站| 天天操天天综合网| 欧美xxx在线观看| 欧美理论在线观看| 国产精品免费一区二区三区在线观看 | 欧美一区二区黄色| 亚洲神马久久| 污视频免费在线观看| 亚洲欧美影院| 国产视频一区在线| 懂色av中文字幕一区二区三区| 成人看片网页| 99福利在线观看| 国产做受高潮69| 亚洲女子a中天字幕| 欧美日中文字幕| 巨骚激情综合| 国产一区二区三区黄| 日韩一级高清毛片| 国产一区亚洲一区| 视频在线亚洲| 在线观看av影片| 蜜桃臀一区二区三区| 亚洲美女自拍视频| 欧美国产一区视频在线观看| 欧美午夜精彩| 国内精品久久久久国产| 中文字幕人成一区| 欧美激情亚洲精品| 天天操天天干天天综合网| 亚洲永久在线| 嫩草伊人久久精品少妇av杨幂| 男人添女人下面免费视频| 国产在线日韩在线| 日韩欧美视频一区| 成人禁用看黄a在线| 欧美日韩精品一区二区视频| 久热国产在线| 亚洲 高清 成人 动漫| 日韩av男人的天堂| 欧美一区二区三区视频免费播放| 福利电影一区二区| 欧洲毛片在线视频免费观看| a黄色片在线观看| 免费成人在线视频网站| 国产精品亚洲欧美导航| 精品对白一区国产伦| 国产精品丝袜91| 亚洲国产免费看| 四虎国产精品免费久久5151| 亚洲图区欧美| 免费无码毛片一区二三区| 成人免费网站在线观看| 亚洲欧美激情四射在线日| 亚洲一区免费视频|