On Wed, Aug 29, 2007 at 12:44:50AM +0400, Alexey Rymonin wrote:
> Hello Igor,
>
> Wednesday, August 29, 2007, 12:24:47 AM, you wrote:
>
> IS> On Wed, Aug 29, 2007 at 12:05:49AM +0400, Alexey Rymonin wrote:
>
> >> >> >> Current function is ngx_devpoll_process_events
> >> >> >> 406 if (c->fd == -1) {
> >> >> >> (dbx) gdb on
> >> >> >>
> >> >> >> (dbx) p events
> >> >> >> events = 2
> >> >> >> (dbx) p i
> >> >> >> i = 1
> >> >> >> (dbx) p event_list[i]
> >> >> >> event_list[i] = {
> >> >> >> fd = 29
> >> >> >> events = 1
> >> >> >> revents = 1
> >> >> >> }
> >> >> >> (dbx) p ngx_cycle->files[event_list[i].fd]
> >> >> >> ngx_cycle->files[event_list[i].fd] = (nil)
> >> >>
> >> >> IS> p n
> >> >> IS> p change_list[0]
> >> >> IS> p change_list[1]
> >> >> IS> p change_list[2]
> >> >>
> >> >> (dbx) p n
> >> >> n = 59821U
> >> >> (dbx) p change_list[0]
> >> >> change_list[0] = {
> >> >> fd = 28
> >> >> events = 2048
> >> >> revents = 0
> >> >> }
> >> >> (dbx) p change_list[1]
> >> >> change_list[1] = {
> >> >> fd = 29
> >> >> events = 2048
> >> >> revents = 0
> >> >> }
> >> >> (dbx) p change_list[2]
> >> >> change_list[2] = {
> >> >> fd = 26
> >> >> events = 2048
> >> >> revents = 0
> >> >> }
> >>
> >> Я ничего не могу сказать, для меня это темный лес.. единственное что на
> >> этот раз в корку упало
> >> сразу 2 рабочих процесса с интервалом в 3 секунды
> >>
> >> 2007/08/28 19:27:20 [alert] 846#0: worker process 19360 exited on signal
> >> 11 (core dumped)
> >> 2007/08/28 19:27:23 [alert] 846#0: worker process 19358 exited on signal
> >> 11 (core dumped)
>
> IS> Хорошо, посмотрим завтра на вторую.
>
> К сожалению она не сохранилась... я машинально открыл через gdb (а он
> на собранных cc бинарниках в кору падает) и его корка покрыла
> нужную... :-(
>
> >> А если можно описать в общем причину ошибки, то можно попробовать засунуть
> >> с баг лист
> >> Сана, посмотрим что они ответят...
>
> IS> Ошибка выглядит так:
>
> IS> делаем POLLREMOVE для сокета,
> IS> закрываем сокет,
> IS> ioctl(DP_POLL) может вернуть события для этого сокета.
>
> Я завтра им залью....
>
> IS> Я правильно понимаю, что это Solaris 10 ?
> Верно..
> SunOS ... 5.10 Generic_125101-10 i86pc i386 i86pc
>
> Nginx 0.6.8 был собран под 64-бита...
>
> IS> На более ранних у меня нет подобных баг-репортов, что говорит или о том,
> IS> что там nginx практически не использолвали, или же там не было этой
> ошибки.
>
> у меня есть 2 сервера на которых читстый update2 (SunOS ... 5.10
> Generic_118855-14 i86pc
> i386 i86pc) младше этой юзать не рекомендуют....
> и чистый update3 (SunOS ... 5.10 Generic_118855-33 i86pc i386 i86pc)
>
> Я могу поставить на них nginx и запустить стрес тест на всех трех
> вресиях ядра... Сэмулировать нагрузку превышающую текущую, на мелких
> файлах, тостых файлах, нот фаундах, форбиденах и больших клиенских
> запросах (чтобы в буфер не влезал)... если эта ошибка ядра, то скорее всего
> рано или поздно
> она повториться...
Это было бы интересно при включённом отладочном логе. Его можно вращать
раз в минуту.
> >> IS> А что показывают
> >>
> >> IS> p change_list[3]
> >> IS> p change_list[4]
> >> IS> p change_list[5]
> >> IS> p change_list[6]
> >> IS> p change_list[7]
> >>
> >> (dbx) p change_list[3]
> >> change_list[3] = {
> >> fd = 26
> >> events = 1
> >> revents = 0
> >> }
> >> (dbx) p change_list[4]
> >> change_list[4] = {
> >> fd = 11
> >> events = 2048
> >> revents = 0
> >> }
>
> IS> Похоже, больше 5 элементов не использовалось.
>
> Это плохо?
Нет.
> >> (dbx) p change_list[5]
> >> change_list[5] = {
> >> fd = 0
> >> events = 0
> >> revents = 0
> >> }
> >> (dbx) p change_list[6]
> >> change_list[6] = {
> >> fd = 0
> >> events = 0
> >> revents = 0
> >> }
> >> (dbx) p change_list[7]
> >> change_list[7] = {
> >> fd = 7236416
> >> events = 0
> >> revents = 0
> >> }
>
> IS> А что показывает
>
> IS> p event_list[0]
>
> (dbx) p event_list[0]
> event_list[0] = {
> fd = 28
> events = 1
> revents = 1
> }
p *ngx_cycle->files[28]
--
Игорь Сысоев
http://sysoev.ru