[Gelistirici] Sandbox violation: open (/dev/zero -> /dev/zero)
Fatih Aşıcı
fatih.asici at gmail.com
22 Nis 2007 Paz 15:13:08 EEST
21 Nis 2007 Cts tarihinde, Gürer Özen şunları yazmıştı:
> On Saturday 21 April 2007 20:36:17 Fatih Aşıcı wrote:
> > Gambas2 kurulurken aşağıdaki gibi sandbox violation meydana geliyor.
> > Galiba /dev/zero da valid_dirs listesine girmeli?
>
> Sanmıyorum, /dev/zero'yu yazma amacıyla açmamalı build işlemi.
>
Gambas2 arşivinde /dev/zero kullanan bir yere rastlamadım. Ancak hatanın bir
lt_dlopenext çağrısında meydana geldiğini farkedince gambas2 ile gelen
libltdl koduna baktım. Orada da violation meydana gelen yer module_open
çağrısının yapıldığı satır:
while (loader)
{
lt_user_data data = loader->dlloader_data;
cur->module = loader->module_open (data, filename);
if (cur->module != 0)
· {
· break;
· }
loader = loader->next;
}
strace çıktılarından bir kısmı da şöyle:
munmap(0xa7dbe000, 233161) = 0
gettimeofday({1177231145, 313025}, NULL) = 0
open("/dev/zero", O_RDWR) = 7
mmap2(NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 7, 0) =
0xa7df5000
close(7) = 0
mmap2(NULL, 425984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xa6786000
gettimeofday({1177231145, 313516}, NULL) = 0
Build esnasında gbi2 (gambas bileşen bilgilerini oluşturan araç) çalışıyor ve
bileşenlere ait kitaplıkları açmaya çalışıyor. Sözünü ettiğim sorun her
bileşende olmuyor. Ben sorunun glibc'den kaynaklandığını düşünmeye başladım.
glibc-2.3.6/malloc/malloc.h içinde şöyle birşeyler var:
#ifndef MAP_ANONYMOUS
static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
#define MMAP(addr, size, prot, flags) ((dev_zero_fd < 0) ? \
(dev_zero_fd = open("/dev/zero", O_RDWR), \
mmap((addr), (size), (prot), (flags), dev_zero_fd, 0)) : \
mmap((addr), (size), (prot), (flags), dev_zero_fd, 0))
#else
#define MMAP(addr, size, prot, flags) \
(mmap((addr), (size), (prot), (flags)|MAP_ANONYMOUS, -1, 0))
#endif
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi