From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <433FB41B.7020804@gorodmasterov.com> Date: Sun, 02 Oct 2005 14:19:07 +0400 From: Vladimir Lettiev User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050815) X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Devel discussion list Subject: Re: [devel] Re: I: Sisyphus-20050929 unmets: +2 (93/40) References: <20050929190815.GA4113@basalt.office.altlinux.org> <433C4E89.3000104@gorodmasterov.com> <433D5B25.2070300@altlinux.ru> <433DC70C.9060508@gorodmasterov.com> <20051001031605.GF3256@solemn.turbinal.org> <433E37E6.4060700@gorodmasterov.com> <20051001160154.GB20413@basalt.office.altlinux.org> In-Reply-To: <20051001160154.GB20413@basalt.office.altlinux.org> Content-Type: multipart/mixed; boundary="------------080100070505070109040203" X-Virus-Scanned: by amavisd-new at gorodmasterov.com X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Oct 2005 10:19:11 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------080100070505070109040203 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Dmitry V. Levin пишет: >>На ядрах с Owl действительно наблюдаются проблемы при запуске тестов >>этого пакета, кажется вот на такой конструкции: >> >>my $share = new IPC::ShareLite( .... some things here ....); >>... >>$share->store( 0 ); >> >>Дальше тест не выполняется, висит, до нажатия Ctrl+C. >>На 2.6.x естественно все ок. > > Это дело времени. :) Я сделал патч для IPC::ShareLite. Как мне показалось проблема в том, что данный модуль сначала делает shmdt() и лишь после пытается метить сегмент флагом IPC_RMID. Попробовал поменять порядок и вроде как заработало. Если кто-то может его прокомментировать, welcome. -- С уважением, Владимир Леттиев aka crux --------------080100070505070109040203 Content-Type: text/x-patch; name="sharelite.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="sharelite.diff" --- sharelite.c~ 2000-04-14 14:24:00 +0400 +++ sharelite.c 2005-10-02 14:07:41 +0400 @@ -284,10 +284,10 @@ /* garbage collection -- remove unused segments */ if (node->shmaddr->next_shmid >= 0) { shmid = node->shmaddr->next_shmid; - if (_detach_segments(node->next) < 0) - return -1; if (_remove_segments(shmid) < 0) return -1; + if (_detach_segments(node->next) < 0) + return -1; node->shmaddr->next_shmid = -1; node->next = NULL; share->tail = node; @@ -446,16 +446,18 @@ } semid = share->head->shmid; - if (_detach_segments(share->head) < 0) - return -1; if (rmid) { if (_remove_segments(semid) < 0) return -1; semctl_arg.val = 0; + if (_detach_segments(share->head) < 0) + return -1; if (semctl(share->semid, 0, IPC_RMID, semctl_arg) < 0) return -1; } else { + if (_detach_segments(share->head) < 0) + return -1; if (RM_EX_LOCK(share->semid) < 0) return -1; } --------------080100070505070109040203--