[Gelistirici] Comar segmentation fault problemi

Onur Küçük onur at pardus.org.tr
8 Eyl 2009 Sal 19:28:55 EEST


On Tue, 08 Sep 2009 19:11:25 +0300
Ozan Çağlayan <ozan at pardus.org.tr> wrote:

> Gürer Özen wrote:
> > 28 Ağustos 2009 Cuma günü (saat 19:17:26) Ozan Çağlayan şunları
> > yazmıştı:
> >
> >   
> >> Comar'da da (yukarda 7. frame'de gördüğünüz gibi)
> >> proc_func(handle_message) çağrısı var yani handle_message child
> >> process'te çalıştırılıyor.
> >>     
> >
> > Çok incelemeye vaktim olmadı ama:
> >
> > Çomar python'a bazı fonksiyonlar falan ekliyor (script_init
> > içinde). Bu ana process'te yapılmış ve doğal olarak ilk önce Python
> > VM init ediyor.
> >
> > Bunun ana process'te yapılması bence iyi bir yol değil. Ana process
> > kendisi betik execute etmeyecekse (ki etmemesi çok daha iyi bir
> > design olur), Python ile ilgili çağrı yapmamalı ve bu script_init
> > aslında handle_message'daki Py_Initialize sırasında yapılması.
> >   
> 
> It's time to get your hands dirty :)
> 
> Dün ve bugün bütün günümüzü buna harcadık Onur ayrı ben ayrı. Elde
> edebildiğimiz şeyler sıfıra yakın. Ümidim bayağı azaldı. Bu konularda
> daha yetenekli olanların yardımına ihtiyacımız var sanırım.
> 
> Son durumu özetlersem:
> 
> - Bir qemu imajı üzerinde durumu tekrarlamak oldukça kolay
> - Gerçek sistemde sorunu yaşayanlar var, ilgili bugzilla hatası #11010
> - Tekrar ettiğimiz durumların hepsi indirme esnasında oluyor yani
> postInstall, pakhandler falan çalıştırılması söz konusu değil,
> - COMAR'dan gittikçe daha az şüphelenmeye başlıyorum,
> 
> - Dosya transferi sırasında çok yüksek dozda mesaj transferi oluyor
> D-Bus üzerinden. Bu transferin sebebi, pisi'deki urlgrabber kodunun
> progress bilgisi göndermesi. Bu bilgi COMAR'daki pisi bacağı
> tarafından handle edilerek arayüzde gösteriliyor. Yani progress
> bilgisi Python kodundan, C ile yazılmış COMAR'a, oradan da bacağa
> aktarılıyor, bu esnada ltrace -C çıktısında PyInitialize() ve
> PyFinalize()'lar görülebilir,
> 
> - ltrace ile bakmaya devam edildiğinde, her paketin indirilmesinden
> sonra paketin boyutuna göre uzunca bir süre memset() ve memcpy()
> çağrıları görüyoruz. Parametreler genelde .pisi arşivinin içindeki
> files.xml ve metadata.xml'den geliyorlar. Bu esnada bir yerden bir
> yere kopyalama oluyor büyük ihtimalle. Bu işlemin en sonunda COMAR
> iniyor aşağı.
> 
> Örnek paket vim. Dün 1 bugün 3 kere tam vim paketinin indirilmesi %100
> olduktan sonra indi COMAR. memcpy() ile paketçi bilgisini falan
> kopyaladı sonra SIGSEGV verdi.
> 
> - İlgili hatayı giren kişi, bu gerçekleştirilemeyen güncelleme
> sepetinde yer alan pisi güncellemesi yapılırsa hatayı
> engelleyebiliyorum demiş. 2009'la gelen pisi ve şu anki pisi
> arasındaki farklara bakmak lazım. Faik?
> 
> 
> Yarın, progress bilgilerinin akışını iptal edip deneyeceğim, bakalım
> ne olacak.

 Bir de Python GC de (gcmodule.c de gidiyor) şöyle eğlenceli bir
sıkıntımız var, ilgili olabilir


#include <python2.6/Python.h>

int main(void) {
    int i;

    for (i = 0; i < 1000; ++i) {
        Py_Initialize();
        /* Borks */
        PyRun_SimpleString("import tarfile\n");
        /* OK
        PyRun_SimpleString("import gc\n");
        PyRun_SimpleString("import zipfile\n");
        */
        Py_Finalize();
    }

    return 0;
}


-- 
 Onur Küçük                                      Knowledge speaks,
 <onur.--.-.pardus.org.tr>                       but wisdom listens




Gelistirici mesaj listesiyle ilgili daha fazla bilgi