On Wed, Mar 06, 2013 at 10:38:06PM +0100, Bartlomiej Zimon wrote: > Dnia 5 marca 2013 10:01 Paweł Kośka <pa...@viop.pl> napisał(a): > > > W dniu 5 marca 2013 07:02 użytkownik Jakub Bogusz > > <qbo...@pld-linux.org> napisał: > > > On Mon, Mar 04, 2013 at 02:14:45PM +0100, Paweł Kośka wrote: > > > > >> wiesza się na: > > >> > > >> [root@pavetta pld]# LANG=C poldek -v --noask -s packages/RPMS/ > > >> --mkidxz > > >> Creating pndir index of /home/services/PLD/pld/packages/RPMS/ > > >> (type=dir)... > > >> Loading [dir]/home/services/PLD/pld/packages/RPMS/... > > >> Writing /home/services/PLD/pld/packages/RPMS/packages.ndir.gz... > > > > > > Jak to wiesza? > > > Co pokazuje strace? > > > Przy EPERM/EACCESS poldek nie powinien się wieszać, tylko zakończyć > > > działanie. > > > Jeśli jest inaczej, to błąd. > > > > Mozna to jakos zreprodukowac bez zabawy w mfs ?
W strace wygląda to tak: [...] 935. write(1, "Writing /home/services/PLD/RPMS/"..., 52) = 52 936. stat("/home/services/PLD/RPMS/packages.ndir.gz", 0x7fff804cb1a0) = -1 ENOENT (No such file or directory) 937. open("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA", O_RDWR|O_CREAT|O_EXCL, 0600) = 3 938. fchmod(3, 0600) = 0 939. rmdir("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA") = -1 ENOTDIR (Not a directory) ^^^^^ po co to BTW??? później też powtarza się kilka razy 940. unlink("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA") = 0 [...] 1198. dup(3) = 6 [...] 1208. open("/home/services/PLD/RPMS/packages.ndir.gz", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3 [...] 1213. dup(3) = 7 [...] 1219. lseek(6, 0, SEEK_SET) = 0 1220. lseek(7, 0, SEEK_END) = 68 1221. read(6, 0x7fff804c70c0, 16384) = -1 EPERM (Operation not permitted) 1222. write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4294967295) = -1 EFAULT (Bad address) 1223. read(6, 0x7fff804c70c0, 16384) = -1 EPERM (Operation not permitted) 1224. write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4294967295) = -1 EFAULT (Bad address) [...i tak do ...] Czyli dwa błędy, albo nawet trzy błędy: - brak sprawdzenia statusu read() - użycie informacji o błędzie (-1) jako liczby bajtów do zapisu - brak sprawdzenia statusu write() -- Jakub Bogusz http://qboosh.pl/ _______________________________________________ pld-devel-pl mailing list pld-devel-pl@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl