[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