Pygame: Fatal Python error: (pygame parachute)

Arkadaşlar oyunumu çalıştırdığım zaman düzgün çalışıyor ama (sık olmasada) nadiren
şu hatayı alıyorum:

pygame 1.9.4.post1
Hello from the pygame community. https://www.pygame.org/contribute.html
Fatal Python error: (pygame parachute) Segmentation Fault

Current thread 0x00007fbd751ee740 (most recent call first):
  File "/usr/lib/python3/dist-packages/pygame/sprite.py", line 122 in __init__
  File "/home/asanadam/PycharmProjects/Cysoft/PyroMan/demo_stage.py", line 420 in __init__
  File "/home/asanadam/PycharmProjects/Cysoft/PyroMan/dersprogram\u0131.py", line 42 in load_map
  File "/home/asanadam/PycharmProjects/Cysoft/PyroMan/dersprogram\u0131.py", line 156 in new
  File "/home/asanadam/PycharmProjects/Cysoft/PyroMan/dersprogram\u0131.py", line 386 in <module>
[Finished in 44.4s with exit code -6]
[cmd: ['/usr/bin/python3', '-u', '/home/asanadam/PycharmProjects/Cysoft/PyroMan/dersprogramı.py']]
[dir: /home/asanadam/PycharmProjects/Cysoft/PyroMan]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]

sebebi nedir sizce bu hatanın durup dururken oldu bu ve tekrarladı heralde bir şeye dokunmuşumdur dedim takmadım ama alakası yok ve nadiren oluyor anlamadığım kısımlardan biri de bu
birde üstüne şöyle bir satır basıyor

pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib pcm.c:8432:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8432:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8432:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8432:(snd_pcm_recover) underrun occurred

@EkremDincel (kızma pygame ile içli dışlı seni gördüğüm için seni etiketledim :smile:)

internette aratırdım ama bir sonuç bulamadım neden kaynaklandığınıda bilmiyorum bazıları pygame ile tkinter i birlikte kullandığı için böyle oluyormuş ama ben tkinter kullanmıyordum ayrıca win10 da neden hiç böyle hatalar vermedi ? Neden böyle oluyor?

Hiç karşılaşmadım bu hata ile. İnternette araştırmanız ve bir şey bulamazsanız bir issue açmanız daha doğru olur.

issue nedemek?..

sanırım sıkıntı ubuntu ile alakalı çünkü bazılarıda bu soruna ubuntuda karşılaşmış.
olamaz mı?

Sorun 5. python kaynak kodu dosyasinin 123. satirinda.

Ne dememizi bekliyorsun ki?

Kutuphanede bir bug var veya “yapmayin” dedigi bir seyi yapmissin. Cagirdigin butun pygame fonksiyonlarini dokumentasyonun soyledigi sekilde cagirdigindan emin ol. Hatta sirf fonksiyonlar degil, butun siniflarin/modullerin/fasilitelerin ozetlerini okuyup resmi kullanim sekillerine bak, seninkinin farkli oldugu yerleri degistir.

Bu arada hatayi olusturan adimlari bulabilir ve hatayi istedigin zaman olusturabiliyor hale gelirsen bu cozume giden yolda en buyuk adim.

sorunu bende bilmiyorum aniden olmaya başladı asil size anlayamadığım bir hatayı nasıl anlatabilirim ki daha önce çalışıyordu hemde sorunsuz linux ile alakalı olduğunu düşündüm sürücüleri güncelledim oldu sanırım şuan hata çıkmıyor

ve 120.satırda sıkıntı yok yanlışda çağrılmamış

bence buna gerek yok

araştırdım ve sanırım ubuntu ile alakalı o yüzden o kadar uğraşmaya gerek yok

Bence programin kendisine bile gerek yok ama “nasil cozeriz” diye soruyorsan cevabi bu :slight_smile:

Belki hata ayiklama metodolojileriyle ilgilenen biri vardir diye yazdim zaten, yoksa problem ilginc degil.

Ben konuyu açarken biri daha önce bu sorunla karşılaşmıştır diye açtım nasıl sorun çözülür öğrenmek için değil sonuçta kodda hata yok her sorunda kodda hata olmasına gerek yok

eskiden çalışan bir kod şimdi çalışmıyorsa sorun koddamıdır sistemdemi

Evet ama konuyu herkese acik bir foruma actin, ve problemin bitince kapanmadi.

Bunun, forumun senin problemini cozmenin disinda amaclari oldugunu gostermesi lazim. Bunlardan bir tanesi de kimi yazilim gelistirme metodolojilerini ogrenmek isteyen insanlari bir araya getirip onayak saglamasi. Ben de bu taraftan yaklasiyorum basliga, o yuzden senin hangi amacla actigin beni ilgilendirmiyor.

Bu cok dogru mesela, fakat yazilim gelistiren birinin bunun tam tersini varsaymasi lazim. Hatanin kutuphanede oldugunu kanitlayip cozumunu bulma yolu, hatanin kullanicida oldugunu varsayarak basliyor.

Gunumuz teknoloji dunyasindaki genel yaklasim/anlayis son 10-20 senedir bu sekilde degil, gunumuzle kontrast yarattigi icin deyineyim dedim.

1 Beğeni

birisine sanki sorunumu çözmek için zorunluymuş gibi özelden atmak ne kadar doğru

diyelim ki hata kütüphanede,sizin dediğiniz her şeyi yaptım ama kodda sıkıntı yok isterseniz paylaşiyim kodun o kısmını

başka birisi aynı hatayla karşılaşıp bu forumda arattığında ne olacak? sorun tek benim sorunum olduğunu nereden biliyorsun

@EkremDincel de sorumun cevabını verdi

Son derece yanlis.
Ama niye bir alternatif ariyoruz ki? Bence yaptiginda bir sikinti yok, son derece dogru.

Tamam, iste o zaman sorunun kutuphanede oldugundan emin oluyoruz ve bonus olarak cozmenin yontemini bulmus oluyoruz. Birazcik daha ugrasarak bunun bir daha kimsenin basina gelmemesini saglayabiliyoruz (ozgur yazilim projelerinde) veya proje sahibine sorunu hizlica cozmesi icin gereken bilgiyi verebiliyoruz.

Kodun o kismini (hatta tamamini, hatta tamaminin probleme indirgenmis halini) bastan paylasman gerekiyordu zaten ama onu burada konusmaya gerek yok, daha cok karsilasacaksin.

Buradaki mantik zincirini kuramadim.

Forumun amaclarindan biri senin problemini cozmek.
Forumun baska amaclari da var.
Biri senin probleminin aynisiyla karsilasti. Ne olacak?
Senin probleminin cozumu onun da isine yarayacak -> her sekilde pozitif sonuc
Senin probleminin cozumu ona yaramadi -> onun icin kotu sonuc, senin pozitif sonucunu degistirmiyor

Sorunun tek senin sorunun oldugunu dusunmuyorum. “Nereden biliyorum”??!

kodu:

    def load_map(self):
        x = y = 0
        for row in level:
            for col in row:
                if col == "P":
                    p = Platform(x, y, "a")
                    Platforms.add(p)
                    all_sprites.add(p)
                elif col == "c":
                    coin = Coin(x+5, y)
                    Coins.add(coin)
                    all_sprites.add(coin)
                elif col == "S":
                    SPK =  Spike(x, y)
                    spikes.add(SPK)
                    all_sprites.add(SPK)

                elif col == "G":
                    Plt = Platform(x, y, "b")
                    Platforms.add(Plt)
                    all_sprites.add(Plt)
                elif col == "W":
                    Wall = Platform(x, y, "c")
                    Platforms.add(Wall)
                    all_sprites.add(Wall)
                elif col == "s":
                    # daha geliştireceğiz o yüzden bu haline takılmayın
                    self.store = Store(x, y - 40, self.screen)
                    all_sprites.add(self.store)
                        
                elif col == "E":
                    enemy = Enemy(x, y-30, self.screen)
                    enemy.walls = Platforms
                    Enemys.add(enemy)
                    all_sprites.add(enemy)
                elif col == "X":
                    self.Exit = ExitPortal(x,y-60)
                    all_sprites.add(self.Exit)




                x += 25
            y += 25
            x = 0
            tileWidth = len(level[0])

            tileHeight = len(level)

            mapWidth = tileWidth*25

            mapHeight = tileHeight*25

            self.camera = Camera(mapWidth, mapHeight)

bir sıkıntı göremiyorum

oradaki camera kodu:

class Camera:
    def __init__(self, mapWidth, mapHeight):
        self.camera = pg.Rect(0, 0, mapWidth, mapHeight)
        self.width = mapWidth
        self.height = mapHeight
        
    def apply(self, sprite):
        return sprite.rect.move(self.camera.topleft)
    def apply_rect(self, rect):
        return rect.move(self.camera.topleft)# For The Enemy Health
    def update(self, target):
        x = -target.rect.centerx + int(WIDTH/2)

        y = -target.rect.centery + int(HEIGHT//1.35)

        # limit scrolling to map size

        x = min(0, x)  # left


        y = min(0, y)  # top

        x = max(-(self.width - WIDTH), x)  # right

        y = max(-(self.height - HEIGHT), y)  # bottom

        self.camera = pg.Rect(x, y, self.width, self.height)

gene bir sıkıntı göremiyorum
hatta şöyle bir deneme yaptım acaba pygamenin modülleri yüklerken mi sıkıntı oluyor diye

print("importing pygame")
import pygame
print("initialising pygame")
pygame.init()
...

Ben pygame goremiyorum :slight_smile:

Dedigim gibi, problem koddaysa pygame fasilitelerinin kullaniminda. Butun kullanimlari incelemek lazim. (Yine dedigim gibi, kodun tamami veya hatayi cikartacak minimum koda indirgenmis halini incelemek lazim.)