From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 9 Dec 2003 17:55:49 +0300 From: Sergey Vlasov To: devel-kernel@altlinux.ru Subject: Re: [d-kernel] shmctl: Invalid argument Message-ID: <20031209145549.GH835@master.mivlgu.local> Mail-Followup-To: devel-kernel@altlinux.ru References: <20031209172932.709fe253.bga@altlinux.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="KscVNZbUup0vZz0f" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20031209172932.709fe253.bga@altlinux.ru> X-BeenThere: devel-kernel@altlinux.ru X-Mailman-Version: 2.1.3 Precedence: list Reply-To: ALT Linux kernel packages development List-Id: ALT Linux kernel packages development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Dec 2003 14:55:50 -0000 Archived-At: List-Archive: List-Post: --KscVNZbUup0vZz0f Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Dec 09, 2003 at 05:29:32PM +0300, Grigory Batalov wrote: > После переезда с ядра 2.4.20-alt10-smp на 2.4.22-std-smp-alt12 > от программы amdump (пакет amanda) наблюдаются сообщения: > > taper: FATAL shmctl: Invalid argument > > Я просмотрел исходники taper, его манипуляции с памятью > можно упростить до прилагаемого файла. > Указанное сообщение соответствует коду в taper.c: > > if(shmid == -1) return; /* nothing to destroy */ > if(shmctl(shmid, IPC_RMID, NULL) == -1) { > error("shmctl: %s", strerror(errno)); > } > > При запуске shmtest обычным пользователем видно, что память > выделяется и затем (через заданные 5 сек.) освобождается: > > $ ipcs > ------ Shared Memory Segments -------- > key shmid owner perms bytes nattch status > 0x00000000 262150 bga 700 1048576 1 > > > Однако, на ядре 2.4.20-alt10-smp программа завершается > молча, а на 2.4.22-std-smp-alt12 выходит сообщение: > > ./shmtest: : Unknown error 2339276 Не воспроизводится... И программа с ошибками - попробуйте приложенный исправленный вариант. gcc -o shmtest -g -O2 -Wall -W shmtest.c --KscVNZbUup0vZz0f Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="shmtest.c" #define _GNU_SOURCE #include #include #include #include #include #include #include #include int main(void) { int shmid = -1; char *result; shmid = shmget(IPC_PRIVATE, 1024*1024, IPC_CREAT|0700); if(shmid == -1) { error(0, errno, "shmget"); exit(1); } result = (char *)shmat(shmid, NULL, 0); if(result == (char *)-1) { int save_errno = errno; if(shmctl(shmid, IPC_RMID, NULL) == -1) { error(0, errno, "shmctl"); } error(0, save_errno, "shmat"); exit(1); } sleep(5); if(shmctl(shmid, IPC_RMID, NULL) == -1) { error(0, errno, "shmctl"); exit(1); } if(shmdt(result) == -1) { error(0, errno, "shmdt"); exit(1); } exit(0); } --KscVNZbUup0vZz0f--