記憶體越界之“BUG kmalloc-128: Redzone overwritten”

來源:互聯網
上載者:User

如題,編譯核心時把CONFIG_SLUB_STATS、 CONFIG_SLUB_DEBUG_ON開啟,記憶體塊使用時越界出現這個資訊,說明記憶體塊在使用時Redzone區被值被覆蓋。

系統中的記憶體塊如下:

# cat  /sys/kernel/slab/kmalloc-
/sys/kernel/slab/kmalloc-1024/  /sys/kernel/slab/kmalloc-4096/
/sys/kernel/slab/kmalloc-128/   /sys/kernel/slab/kmalloc-512/
/sys/kernel/slab/kmalloc-192/   /sys/kernel/slab/kmalloc-64/
/sys/kernel/slab/kmalloc-2048/  /sys/kernel/slab/kmalloc-8192/
/sys/kernel/slab/kmalloc-256/   /sys/kernel/slab/kmalloc-96/
/sys/kernel/slab/kmalloc-32/
# cat  /sys/kernel/slab/kmalloc-

可知kmalloc可分配的記憶體區塊大小從32---4096.

完整資訊如下:

=============================================================================
BUG kmalloc-128: Redzone overwritten
-----------------------------------------------------------------------------

INFO: 0xc54d4140-0xc54d4140. First byte 0x0 instead of 0xcc
INFO: Allocated in dev_write+0x28/0x100 age=0 cpu=0 pid=12974
INFO: Freed in load_elf_binary+0x1118/0x11f8 age=0 cpu=0 pid=12974
INFO: Slab 0xc05dfa80 objects=21 used=1 fp=0xc54d4000 flags=0x00c1
INFO: Object 0xc54d40c0 @offset=192 fp=0xc54d4000

Bytes b4 0xc54d40b0:  5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a   ZZZZZZZZZZZZZZZZ
  Object 0xc54d40c0:  77 6c 30 5f 73 73 69 64 00 31 31 31 31 31 31 31       abc_1234.1111111
  Object 0xc54d40d0:  31 31 31 31 31 31 31 31 31 34 30 3a 31 36 3a 39     11111111140:16:9
  Object 0xc54d40e0:  46 3a 45 39 3a 34 31 3a 32 32 2d 34 30 3a 31 36     F:E9:41:22-40:16
  Object 0xc54d40f0:  3a 39 46 3a 45 39 3a 34 31 3a 32 33 2d 34 30 3a      :9F:E9:41:23-40:
  Object 0xc54d4100:  31 36 3a 39 46 3a 45 39 3a 34 31 3a 32 34 2d 34    16:9F:E9:41:24-4
  Object 0xc54d4110:  30 3a 31 36 3a 39 46 3a 45 39 3a 34 31 3a 32 35     0:16:9F:E9:41:25
  Object 0xc54d4120:  2d 34 30 3a 31 36 3a 39 46 3a 45 39 3a 34 31 3a     -40:16:9F:E9:41:
  Object 0xc54d4130:  32 36 2d 34 30 3a 31 36 3a 39 46 3a 44 39 3a 00     26-40:16:9F:D9:.
 Redzone 0xc54d4140:  00 cc cc cc                                                                                

 Padding 0xc54d4168:  5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ
 Padding 0xc54d4178:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ    

當kmalloc申請記憶體大小剛好為slab提供的記憶體區塊的莫一個大小時,比如128,如果把第128+1位置零,

就會出現上面的資訊。這隻是在記憶體區塊臨界時才能發現,但是影響遠比臨界可怕。

至此,問題已經很明了了。記憶體越界,你懂的!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.