ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]:



Monday, January 12, 2009, 9:09:57 PM, you wrote:
IS> On Mon, Jan 12, 2009 at 08:43:10PM +0100, Andrew wrote:

>> 
>> Monday, January 12, 2009, 3:04:18 PM, you wrote:
>> IS> On Mon, Jan 12, 2009 at 03:38:42PM +0300, Igor Sysoev wrote:
>> 
>> >> On Mon, Jan 12, 2009 at 01:30:54PM +0100, Andrew wrote:
>> >> 
>> >> > 
>> >> >    > Если из вашего модуля, то скорее всего ошибка именно там.
>> >> > 
>> >> >    Показывает, что из моего модуля. Но ошибка, по которой произошло
>> >> >    падение, подозрительно глубоко в ngx_slab_alloc_pages. Маловероятно,
>> >> >    что мой модуль обнулил только кусочек структуры ngx_slab_page_t, а
>> >> >    именно page->next = null.
>> >> 
>> >> А какой размер зоны используется в своём модуле ?
>> 
>> Если page->>slab:
>> 
>> IS> (gdb) p* page
>> IS> $3 = {slab = 1095216660489, next = 0x0, prev = 46912546242592}  
>> 
>> IS> верный, то зона должна быть 1020G, что не похоже на правду.
>> 
>> IS> Остаётся предположить, что чей-то код записал в начало ngx_slab_page_t,
>> IS> то есть, в slab и next "09 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00".
>> 
>> А значение prev похоже на правду?
>> 
>> Если посмотреть кусок памяти до ngx_slab_page_t и после,
>> то видно что там куча повторяющихся значений. Кажется маловероятным, что
>> свой модуль записал какие-то данные в начало ngx_slab_page_t, и они
>> оказались точно такими же как и данные, которые он не перезаписывал.
>> 
>> (gdb) p page
>> $116 = (ngx_slab_page_t *) 0x2aaaadf4f440
>> (gdb) x/128d page-2
>> 0x2aaaadf4f410: 9       0       0       0       -1      0       0       0
>> 0x2aaaadf4f418: 0       0       0       0       0       0       0       0
>> 0x2aaaadf4f420: 1       0       0       0       0       0       0       0
>> 0x2aaaadf4f428: 1       0       0       0       0       0       0       0
>> 0x2aaaadf4f430: 80      -97     -12     -83     -86     42      0       0
>> 0x2aaaadf4f438: -16     -44     -12     -83     -86     42      0       0
>> 0x2aaaadf4f440: 9       0       0       0       -1      0       0       0
>> 0x2aaaadf4f448: 0       0       0       0       0       0       0       0
>> 0x2aaaadf4f450: 32      -128    -89     -83     -86     42      0       0
>> 0x2aaaadf4f458: 8       0       0       0       -1      0       0       0
>> 0x2aaaadf4f460: 0       0       0       0       0       0       0       0
>> 0x2aaaadf4f468: 32      -128    -89     -83     -86     42      0       0
>> 0x2aaaadf4f470: 9       0       0       0       -1      0       0       0
>> 0x2aaaadf4f478: 0       0       0       0       0       0       0       0
>> 0x2aaaadf4f480: 1       0       0       0       0       0       0       0
>> 0x2aaaadf4f488: 9       0       0       0       -1      0       0       0

IS> Можно сделать

IS> p/x *pool
IS> x/128x page-2

IS> ?


Конечно.

(gdb) p/x *pool
$1 = {lock = 0xba0, min_size = 0x8, min_shift = 0x3, pages = 0x2aaaada78128, 
free = {slab = 0x0, next = 0x2aaaadf4f458, 
    prev = 0x2aaaadf52230}, start = 0x2aaaaf04e000, end = 0x2aab97e78000, mutex 
= {lock = 0x2aaaada78000}}

(gdb) x/128x page-2
0x2aaaadf4f410: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f420: 0x00000001      0x00000000      0x00000001      0x00000000
0x2aaaadf4f430: 0xadf49f50      0x00002aaa      0xadf4d4f0      0x00002aaa
0x2aaaadf4f440: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f450: 0xada78020      0x00002aaa      0x00000008      0x000000ff
0x2aaaadf4f460: 0x00000000      0x00000000      0xada78020      0x00002aaa
0x2aaaadf4f470: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f480: 0x00000001      0x00000000      0x00000009      0x000000ff
0x2aaaadf4f490: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f4a0: 0x00000001      0x00000000      0xadf4bd08      0x00002aaa
0x2aaaadf4f4b0: 0xadf4c380      0x00002aaa      0x00000001      0x00000000
0x2aaaadf4f4c0: 0xadf4bcf0      0x00002aaa      0xadf49920      0x00002aaa
0x2aaaadf4f4d0: 0xffffffff      0xffffffff      0x00000000      0x00000000
0x2aaaadf4f4e0: 0x00000002      0x00000000      0x00000009      0x000000ff
0x2aaaadf4f4f0: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f500: 0x00000001      0x00000000      0xadf4b210      0x00002aaa
0x2aaaadf4f510: 0xadf4d8c8      0x00002aaa      0x00000009      0x000000ff
0x2aaaadf4f520: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f530: 0x00000001      0x00000000      0xadf4a610      0x00002aaa
0x2aaaadf4f540: 0xadf498c0      0x00002aaa      0x00000009      0x000000ff
0x2aaaadf4f550: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f560: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f570: 0x00000001      0x00000000      0x00000009      0x000000ff
0x2aaaadf4f580: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f590: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f5a0: 0x00000001      0x00000000      0x00000001      0x00000000
0x2aaaadf4f5b0: 0xadf4e090      0x00002aaa      0xadf4c9b0      0x00002aaa
0x2aaaadf4f5c0: 0x00000001      0x00000000      0xadf4d6e8      0x00002aaa
0x2aaaadf4f5d0: 0xadf4fd10      0x00002aaa      0x00000007      0xffffffff
0x2aaaadf4f5e0: 0x00000000      0x00000000      0x00000001      0x00000000
0x2aaaadf4f5f0: 0x00000009      0x000000ff      0x00000000      0x00000000
0x2aaaadf4f600: 0x00000001      0x00000000      0x00000009      0x000000ff






 




Copyright © Lexa Software, 1996-2009.