In article <[EMAIL PROTECTED]>,
        [EMAIL PROTECTED] (Kiss Gabor) writes:
> Ha a kollegam lep be, akkor neki ilyen hibauzenettel szall ki:
> 
> cdrecord: Cannot allocate memory. Cannot get SCSI I/O buffer.
> 
> A strace szerint ezert:
> 
> mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 
> = -1 EAGAIN (Resource temporarily unavailable)

Tuzetesebben osszevetve a ket futast ez latszik:

Jo:
fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(3, 64), ...}) = 0
geteuid32()                             = 1000
getuid32()                              = 1000
write(1, "Using libscg version \'schily-0.8"..., 35) = 35
write(1, "Driveropts: \'burnfree\'\n", 23) = 23
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfd1a3d8) = 0
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfd1a3d4) = 0
write(2, "SCSI buffer size: 64512\n", 24) = 24
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfd1a3b8) = 0
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfd1a3b4) = 0
brk(0)                                  = 0x80c2000
brk(0x80e5000)                          = 0x80e5000
brk(0)                                  = 0x80e5000
brk(0)                                  = 0x80e5000
brk(0x80e4000)                          = 0x80e4000
brk(0)                                  = 0x80e4000
write(1, "atapi: -1\n", 10)             = 10
[...]

Rossz:
fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(33, 64), ...}) = 0
geteuid32()                       = 0
getuid32()                        = 1004
getuid32()                        = 1004
setreuid32(-1, 1004)              = 0
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfeaab38) = 0
ioctl(3, SG_SET_RESERVED_SIZE, 0xbfeaab34) = 0
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfeaab34) = 0
write(2, "SCSI buffer size: 64512\n", 24) = 24
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfeaab18) = 0
ioctl(3, SG_SET_RESERVED_SIZE, 0xbfeaab14) = 0
ioctl(3, SG_GET_RESERVED_SIZE, 0xbfeaab14) = 0
brk(0)                            = 0x80c2000
brk(0x80e5000)                    = 0x80c2000
mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
-1 EAGAIN (Resource temporarily unavailable)
write(2, "cdrecord: Cannot allocate memory"..., 62) = 62
write(1, "Cdrecord-Clone 2.01.01a01 (i686-"..., 485) = 485
munmap(0xb7f96000, 4096)          = 0
exit_group(12)                    = ?

Egyre kevesbe ertem.
Miert kulonbozik az euid a ket esetben? Mondom, setuid root a cdrecord:

$ ls -l /usr/bin/cdrecord*
-rwsr-xr--  1 root cdrom    133 2005-01-09 17:55 /usr/bin/cdrecord
-rwsr-xr-x  1 root root  348556 2005-01-09 17:55 /usr/bin/cdrecord.mmap
-rwsr-xr-x  1 root root  351404 2005-01-09 17:55 /usr/bin/cdrecord.shm

Es mindket esetben az mmap valtozat futott:
$ ls -lurt /usr/bin/cdrecord*
-rwsr-xr-x  1 root root  351404 2005-07-11 16:31 /usr/bin/cdrecord.shm
-rwsr-xr-x  1 root root  348556 2006-02-22 11:58 /usr/bin/cdrecord.mmap
-rwsr-xr--  1 root cdrom    133 2006-02-22 11:58 /usr/bin/cdrecord

kissg
_________________________________________________
linux lista      -      [email protected]
http://mlf2.linux.rulez.org/mailman/listinfo/linux

válasz