[Gelistirici] Comar segmentation fault problemi

Ozan Çağlayan ozan at pardus.org.tr
8 Eyl 2009 Sal 19:11:25 EEST


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.




Gelistirici mesaj listesiyle ilgili daha fazla bilgi