回归: 在 Linux x86_64 上使用 `cosmo_dlopen` 调用外部函数时发生 Segfault

作者: HeavenVolkoff创建于 2026年2月11日更新于 2026年3月16日
标签critical severity

typedef struct { uint32_t type; uint32_t timestamp; uint32_t windowID; uint32_t state; uint8_t repeat; uint8_t padding2; uint8_t padding3; struct { uint32_t scancode; int32_t sym; uint16_t mod; uint32_t unused; } keysym; } SDL_KeyboardEvent;

typedef union { uint32_t type; SDL_KeyboardEvent key; uint8_t padding[56]; } SDL_Event;

typedef struct { int x, y, w, h; } SDL_Rect;

typedef int (PFN_SDL_Init)(uint32_t flags); typedef void (PFN_SDL_Quit)(void); typedef SDL_Window (PFN_SDL_CreateWindow)(const char title, int x, int y, int w, int h, uint32_t flags); typedef SDL_Renderer (PFN_SDL_CreateRenderer)(SDL_Window window, int index, uint32_t flags); typedef int (PFN_SDL_SetRenderDrawColor)(SDL_Renderer renderer, uint8_t r, uint8_t g, uint8_t b, uint8_t a); typedef int (PFN_SDL_RenderClear)(SDL_Renderer renderer); typedef void (PFN_SDL_RenderPresent)(SDL_Renderer renderer); typedef int (PFN_SDL_RenderFillRect)(SDL_Renderer renderer, const SDL_Rect* rect); typedef int (PFN_SDL_PollEvent)(SDL_Event event); typedef void (PFN_SDL_DestroyRenderer)(SDL_Renderer renderer); typedef void (PFN_SDL_DestroyWindow)(SDL_Window window); typedef const char* (PFN_SDL_GetError)(void); typedef const char (*PFN_SDL_GetPlatform)(void); typedef int (*PFN_SDL_GetCPUCount)(void); typedef int (*PFN_SDL_GetSystemRAM)(void);

内容来源: jart/cosmopolitan