高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区

 

基于DWC_ether_qos的以太網驅動開發-LWIP的堆(內存池)未對齊導致問題的案例分享

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

一.前言

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

二.問題

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

#define MEM_ALIGNMENT 1U


(資料圖)

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

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

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

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

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

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

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

這里還是從pbuf開始,先找到相關代碼上層函數處,斷點

b pbuf_init_alloced_pbuf

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

看到此時p的值是0x28201406

查看如下匯編代碼可知

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

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

再si單步確實進入異常

所以問題確認了。

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

struct pbuf 操作,所以實際是將一個區塊地址強制轉為了結構體指針。

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

當然出于可靠性設計,建議不要進行強制類型轉換,比如MISRA標準里的規范就是如此。

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

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

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

三.總結

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

關鍵詞:

 

最近更新

高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区
日本精品一区| 国产91精品欧美| 国产98色在线|日韩| 成人片在线免费看| 自拍偷拍99| 久久综合色鬼综合色| 亚洲午夜av在线| 成人美女视频在线观看18| 欧美高清视频一区| 欧美精品粉嫩高潮一区二区| 国产精品久久影院| 精品亚洲欧美一区| 久久99国产精品| 欧美精品久久久久久久多人混战 | 精品蜜桃传媒| 欧美丝袜第三区| 国产精品网站一区| 久久97超碰国产精品超碰| 电影午夜精品一区二区三区| 91福利视频久久久久| 欧美国产精品一区| 黑人精品欧美一区二区蜜桃| 国产日韩在线一区二区三区| 欧美日韩一区二区三区高清| 亚洲欧美在线另类| 国产麻豆一精品一av一免费 | 粉嫩一区二区三区性色av| 日本免费高清一区| wwwwww.欧美系列| 免费高清成人在线| 久久久久久高清| 日韩精品自拍偷拍| 日韩国产欧美在线视频| 成人免费看片网址| 欧美肥胖老妇做爰| 亚洲国产一区二区视频| 51国偷自产一区二区三区| 欧美探花视频资源| 一区二区三区在线观看网站| 99久久精品国产精品久久| 色琪琪一区二区三区亚洲区| 中文字幕中文字幕在线一区 | 日本va欧美va精品发布| 国产偷久久久精品专区| 欧美一卡2卡3卡4卡| 天天综合天天做天天综合| 国产精品一区二区三区观看| 欧美一区二区观看视频| 日本亚洲欧美天堂免费| 久久综合福利| 久久久精品一品道一区| 国产伦精一区二区三区| 一级日韩一区在线观看| 国产精品福利av| 成人国产精品免费| 欧美日韩免费观看一区三区| 亚洲一区二区在线免费观看视频| 91在线看网站| 欧美一区二区三级| 青娱乐精品视频在线| 日本一区二区三区视频在线播放| 国产亚洲综合色| 国产sm精品调教视频网站| 欧美自拍丝袜亚洲| 亚洲444eee在线观看| 久久久久久久久久久久久久久久av | 日韩三级在线播放| 国产精品毛片大码女人| 99久久免费国产| 欧美精品色一区二区三区| 日本不卡一区二区三区| 亚洲春色在线视频| 亚洲三级在线看| 国产高清一区视频| 国产三级久久久| 成人美女在线观看| 欧美一区二区网站| 国内精品视频一区二区三区八戒| 伊人色综合影院| 亚洲国产sm捆绑调教视频| 欧美激情视频一区二区三区| 国产精品精品国产色婷婷| 91久久爱成人| 久久色视频免费观看| 成人福利在线看| 日韩色在线观看| 国产成人综合自拍| 91.麻豆视频| 国产一区二区视频在线| 欧美日韩一区二区三区不卡| 美腿丝袜亚洲三区| 色香色香欲天天天影视综合网| 亚洲五月六月丁香激情| 日韩.欧美.亚洲| 亚洲综合男人的天堂| 欧美在线一二三区| 一区二区三区中文字幕精品精品| 久久国产精品久久| 亚洲视频在线一区| 免费一区二区三区在在线视频| 1024亚洲合集| 免费日韩av电影| 一级女性全黄久久生活片免费| 老牛影视免费一区二区| 亚洲品质自拍视频| 欧美精品国产精品久久久| 亚洲九九爱视频| 日韩精品伦理第一区| 亚洲一区二区三区四区五区黄| 日本一区视频在线| 午夜不卡在线视频| 一本一道波多野结衣一区二区| 日韩福利电影在线| 欧美性受极品xxxx喷水| 激情综合色丁香一区二区| 欧美精品日韩综合在线| 成人丝袜高跟foot| 精品国产百合女同互慰| 91中文字精品一区二区| 国产精品视频第一区| 麻豆传媒一区| 亚洲国产精品欧美一二99| 色欧美片视频在线观看| 极品美女销魂一区二区三区 | 成人毛片在线观看| 国产亚洲欧洲一区高清在线观看| 1区1区3区4区产品乱码芒果精品| 欧美国产乱子伦| 欧美在线一二三区| 秋霞午夜鲁丝一区二区老狼| 欧美日韩不卡在线| 不卡免费追剧大全电视剧网站| 久久久久久一二三区| 国产亚洲精品自在久久| 亚洲午夜av在线| 欧美日韩久久久一区| www.亚洲色图.com| 中文字幕一区二区三区在线不卡| 人偷久久久久久久偷女厕| 人人狠狠综合久久亚洲| 日韩午夜电影av| 国产伦精品一区二区三区视频免费| 亚洲黄色免费电影| 在线观看日产精品| 成人黄色a**站在线观看| 国产精品不卡视频| 中文字幕在线亚洲精品 | 亚洲成人av在线电影| 欧美日本韩国一区| 91日韩精品一区| 亚洲美女免费视频| 在线欧美日韩精品| av在线综合网| 亚洲女人****多毛耸耸8| 一区国产精品| 成人动漫在线一区| 亚洲视频1区2区| 91国产福利在线| av在线这里只有精品| 亚洲欧美激情在线| 欧美中文字幕一区二区三区亚洲| 成人激情免费电影网址| 亚洲色图一区二区| 欧美视频在线观看一区| 3d动漫精品啪啪一区二区三区免费| 一区二区在线观看av| 欧美日韩三级一区| 成人高清在线观看| 日本中文一区二区三区| 精品国产一区二区三区久久影院 | 97中文在线| 天天av天天翘天天综合网| 日韩视频一区二区| 精品在线一区| 狠狠色丁香久久婷婷综合_中| 国产女同互慰高潮91漫画| 中文字幕99| 91麻豆国产福利精品| 午夜一区二区三区在线观看| 日韩欧美高清一区| 日韩欧美一区二区三区四区 | 激情综合色综合久久综合| 中文成人av在线| 欧美在线你懂得| 国产精品高清一区二区三区| 免费成人av在线| 欧美激情一区三区| 欧美伊人精品成人久久综合97| 成人18视频| 久久精品国产第一区二区三区| 日本一区二区电影| 欧美视频一区在线| 国产有色视频色综合| 国产一区二区精品在线观看| 亚洲欧美日韩电影| 日韩欧美黄色影院| 一区二区在线不卡| 高清国语自产拍免费一区二区三区| 日本不卡1234视频| 国产精品久久99|