Crash in xinput1_3 XInputGetState when SteamGameId environment variable isn't set
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 92/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- c
- Ambito
- operating-systems
Direzione di ricerca
Inizia da dlls/xinput1_3/main.c:863 in XInputGetState e analizza la ricerca di SteamGameId prima di strcmp. Riproduci il problema con proton run quando SteamGameId non è impostata, quindi verifica che il percorso della variabile mancante non vada più in crash e che il comportamento esistente di SteamGameId rimanga invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
experimental_11.0 (experimental-11.0-20260903b) and bleeding edge. dlls/xinput1_3/main.c:863 (xinput1_4 merges this code):
ret = get_current_state(index, state) ? ERROR_SUCCESS : ERROR_DEVICE_NOT_CONNECTED;
if (ret == ERROR_SUCCESS) goto done;
sgi = getenv("SteamGameId");
if (!strcmp(sgi, "298110")) goto done;
The getenv result goes straight to strcmp without a NULL check. With SteamGameId unset, XInputGetState dereferences NULL and the process exits with EXCEPTION_ACCESS_VIOLATION reading address 0x0.
Seen with Subliminal (appid 2300840, UE 5.7.4) on experimental-11.0-20260903b. Crash log callstack:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000
ucrtbase.dll!strcmp()
XINPUT1_4.dll!0x180005f7d()
XINPUT1_4.dll!0x180020d0()
Subliminal-Win64-Shipping.exe
Disassembly at xinput1_4+0x5f60 confirms the sequence: load "SteamGameId", call getenv, load "298110" into rdx, pass the (NULL) getenv result in rcx, call strcmp:
lea 0x2f6d(%rip),%rcx # 180008ed4 -> "SteamGameId"
call *0x9623(%rip) # getenv
lea 0x2f6c(%rip),%rdx # 180008ee0 -> "298110"
mov %rax,%rcx
call *0x9643(%rip) # strcmp
Repro: any game that calls XInputGetState, run through proton run with STEAM_COMPAT_CLIENT_INSTALL_PATH / STEAM_COMPAT_DATA_PATH set and SteamGameId not exported. Also reproduced with steam steam://rungameid/2300840, which apparently doesn't export it either. Normal Steam library launches set the variable and don't hit this. The hack is absent from proton_11.0, so stable releases are unaffected.
Every other getenv("SteamGameId") call site I checked (d3d8, d2d1, ddraw, gdiplus, ieframe, metahost, mshtml, quartz, rsaenh, wgl) is guarded; this is the only one without the check. Same class as #228, the identical missing NULL check in opengl32.
Patch:
sgi = getenv("SteamGameId");
if (sgi && !strcmp(sgi, "298110")) goto done;
Workaround until then: export SteamGameId= before launching.
- Lingua principale
- C
- Stelle
- 2.1k
- Fork
- 516
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ValveSoftware/wine
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ValveSoftware/wine#366 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ValveSoftware/wine#363 · 1 reazione ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
ValveSoftware/wine#303 · 3 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
ValveSoftware/wine#358 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
ValveSoftware/wine#354 ·
Tutte le issue di ValveSoftware/wine
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
EchoTools/nevr-runtime#698 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
FujiNetWIFI/fujinet-firmware#2079 ·
I maintainer di solito rispondono entro 1 giorno
-
area:ci area:runtime-vm bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
InauguralSystems/EigenScript#1859 ·
I maintainer di solito rispondono entro 1 giorno
-
bug Official Image release/25.12 Supported Device target/kirkwood
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
area/archive bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
DarkFlippers/qUnleashed#374 ·
I maintainer di solito rispondono entro 1 giorno