YNIX / PS2 RECOMP
Atualizações / META 019

META 019: alocador funciona antes de a limpeza nula apagar seu descritor

15/10/2026 · 18:11 BRT · progresso

Resumo

O replay confirmou que três buffers nomeados são alocados com sucesso; depois, uma limpeza guest com destino zero apaga o descritor e bloqueia a busca de mpegbuff.

Defeito

A rotina de limpeza usa objeto 0x009BDA40 + 0x24 = 0 e zera 0x10C bytes. Isso apaga os links do allocator em RAM baixa e leva o guest ao loop 0x0010FA9C.

Solução aplicada

Rastreei os argumentos e retornos do wrapper 0x0010FDB8 e confirmei as alocações File Sys, cd:\MAPS\MUSIC.VIV e bigfile buf antes da limpeza. Registrei a lacuna de fidelidade TLB, sem mascarar a chamada guest nem inventar estado.

Detalhes e evidências

Rastreei o wrapper guest 0x0010FDB8, que chama o alocador nomeado do MOVIE. Antes da falha, o replay mostrou três retornos bem-sucedidos: File Sys, 0x42580 bytes, retornou 0x009BDA40; cd:\MAPS\MUSIC.VIV, 0x14 bytes, retornou 0x80; bigfile buf, 0x800 bytes, retornou 0x100. Depois dessas alocações, a chamada guest 0x00113E74 -> 0x001152A8 usa objeto+0x24 = 0 e pede zero-fill de 0x10C bytes no endereço zero. As SQ auditadas apagam os links e a assinatura do descritor em 0x10..0x4F. A busca posterior de mpegbuff entra no loop 0x0010FA9C e esgota fuel. Resumo causal: o allocator funciona no início deste replay; uma limpeza guest posterior destrói seu descritor. O construtor do objeto, a legitimidade do endereço zero e o evento de limpeza continuam sem confirmação. Não suprimi o zero-fill nem fabriquei dados de allocator. O PS2Tek documenta kuseg como TLB-mapeado e observa que endereços próximos de NULL normalmente não são mapeados. O runtime Ynix atual usa mapeamento direto de RAM baixa, mas o jogo também acessa o descritor em 0x10. Por isso, ainda não apliquei um bloqueio artificial da página zero: primeiro é necessário estabelecer o contexto real de TLB/boot do alvo. O replay terminou parcialmente em 0x0010FA9C, guest_error=0, sem ACTION.ELF, frame ou gameplay. Próximo passo: rastrear a origem da limpeza nula e validar as traduções de memória do perfil de boot. META 019 permanece NOT_READY. Ynix continua sendo um recompilador estático nativo, não um emulador.

META 019