[Gelistirici] Comar segmentation fault problemi

Gürer Özen gurer at pardus.org.tr
28 Ağu 2009 Cum 20:06:27 EEST


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ı.

Fork işleminin copy-on-write olması bazı karışıklıklara yol açabiliyor. Sorun 
yaşamamak için child parent'tan aldığı değerleri sadece okumalı. Kendi 
yazacağı aynı isimde kopyalarını ise sıfırlayarak işe başlamalı. Tabi bunu 
library'ler yapmayabilir. Üstte Py init ettin bazı değişkenleri set etti, 
altta init ettin baktı init edilmiş görünüyor (çünkü is_inited = 1 olarak 
geldi parenttan) ama o init bu process'in içinde yapılmadığı için bazı şeyleri 
kaçırmış olabilir vb.

Bahadır'ın geçen sorduğu signal ayarlanmaması sorunu da bundan kaynaklanıyordu 
tahminen.




Gelistirici mesaj listesiyle ilgili daha fazla bilgi