-
-
Notifications
You must be signed in to change notification settings - Fork 210
Open
Labels
Description
Environment:
pygame-ce 2.5.5 (SDL 2.32.6, Python 3.13.1)
Platform: Linux-6.1.0-38-amd64-x86_64-with-glibc2.36
System: Linux
System Version: #1 SMP PREEMPT_DYNAMIC Debian 6.1.147-1 (2025-08-02)
Processor: SSE2: Yes AVX2: Yes NEON: No
Architecture: Bits: 64bit Linkage: ELF
Python: CPython 3.13.1 (main, Mar 19 2025, 22:50:29) [GCC 12.2.0]
GIL Enabled: True
pygame version: 2.5.5
SDL versions: Linked: 2.32.6 Compiled: 2.32.6
SDL Mixer versions: Linked: 2.8.1 Compiled: 2.8.1
SDL Font versions: Linked: 2.24.0 Compiled: 2.24.0
SDL Image versions: Linked: 2.8.8 Compiled: 2.8.8
Freetype versions: Linked: 2.13.3 Compiled: 2.13.3
Display Driver: x11 ( xwayland == False )
Mixer Driver: Mixer Not Initialized
Current behavior:
If you create a window with the Window class, save it's surface, then close pygame, and after print the surface you'll see overflow garbage instead of it's real size or, if you're lucky, a friendly Fatal Python error: pygame_parachute: (pygame parachute) Segmentation Fault
Expected behavior:
Surf should become a <Surface(Dead Display)> or similar after pygame.close() has been called. At the very least it should not segfault.
Steps to reproduce:
- create a window, then get it's surface with
window.get_surface() - call
pygame.quit() - try to print the surface
Test code
import pygame
window = pygame.Window()
surf = window.get_surface()
pygame.quit()
print(surf.size) # sometimes size overflows too, but this never seems to segfault
print(surf.get_bitsize()) # overflow or segfault which means print(surf) also segfaults