Rama
rsc2-x64
Estado actualizado (2026-05-01)
El crash original de si_addr=0x5 está resuelto con el commit 29176bb6a. Los bugs encontrados y corregidos en esta sesión:
Bugs corregidos
-
process-loop-liveness — doble bug en iteración de livepoints (crash principal):
cg/livepoints se creaba con vector/make 3*size? int-ptr! 10 (obj-sz=12 bytes/elemento)
process-loop-liveness iteraba con loop v/length pero cada iteración retrocedía 3 punteros (12 bytes), dando 3 × v/length retrocesos en vez de v/length / 3 grupos
- Corrección:
ptr-vector/make 30 (obj-sz=4) + loop (v/length / 3)
-
x64_REG_ALL (índice 39) sin registrar — el slot 39 del ptr-array de reg-sets estaba null. Al hacer kill cg x64_REG_ALL, choose-reg hacía ptr-array/pick regs 39 → null → crash en iteración posterior.
-
Literales negativos tipados como 64-bit en x64 — parser.reds:1055 usaba target/int-type (64-bit en AMD64) para literales negativos. Globales como stdout: -1 adquirían tipo int64, incompatible con funciones que esperan integer! (32-bit).
Siguiente bloqueante: prin-2hex duplicado en lib-natives.reds
Actualmente (antes de que la compilación de hello.reds llegue a la fase de linkado/ELF):
$ ./red -c -t Linux-64 system2/tests/x64/hello.reds
*** Compilation Error: undefined symbol2: prin-2hex
*** at line: 52 (utils.reds)
prin-2hex está definido en lib-natives.reds línea ~151 pero el runtime extraído en ~/.red/.rs-runtime/ puede tener una versión desactualizada. Pasos para resolver:
./console system2/merge-runtime.red — regenerar rs-runtime.red
./rebol-core/rebol -qws red.r -r red.red — re-bootstrap
- Si sigue fallando, verificar si hay conflicto de nombre en el orden de includes
Una vez resuelto prin-2hex, el camino está libre hasta el linkado (ELF64).
Contexto
- Commits de esta sesión:
29176bb6a (FIX crashes + type system + stubs)
- Los 3 bugs descritos arriba bloqueaban TODO target (MSDOS, Linux-64, etc.), no solo Linux-64
- M3 (runtime, #syscall, _start) está completo
- El fix del crash desbloquea el camino hacia el hello world ejecutable
Rama
rsc2-x64Estado actualizado (2026-05-01)
El crash original de
si_addr=0x5está resuelto con el commit29176bb6a. Los bugs encontrados y corregidos en esta sesión:Bugs corregidos
process-loop-liveness— doble bug en iteración de livepoints (crash principal):cg/livepointsse creaba convector/make 3*size? int-ptr! 10(obj-sz=12 bytes/elemento)process-loop-livenessiteraba conloop v/lengthpero cada iteración retrocedía 3 punteros (12 bytes), dando3 × v/lengthretrocesos en vez dev/length / 3gruposptr-vector/make 30(obj-sz=4) +loop (v/length / 3)x64_REG_ALL(índice 39) sin registrar — el slot 39 del ptr-array de reg-sets estaba null. Al hacerkill cg x64_REG_ALL,choose-reghacíaptr-array/pick regs 39→ null → crash en iteración posterior.Literales negativos tipados como 64-bit en x64 —
parser.reds:1055usabatarget/int-type(64-bit en AMD64) para literales negativos. Globales comostdout: -1adquirían tipo int64, incompatible con funciones que esperaninteger!(32-bit).Siguiente bloqueante:
prin-2hexduplicado enlib-natives.redsActualmente (antes de que la compilación de hello.reds llegue a la fase de linkado/ELF):
prin-2hexestá definido en lib-natives.reds línea ~151 pero el runtime extraído en~/.red/.rs-runtime/puede tener una versión desactualizada. Pasos para resolver:./console system2/merge-runtime.red— regenerar rs-runtime.red./rebol-core/rebol -qws red.r -r red.red— re-bootstrapUna vez resuelto
prin-2hex, el camino está libre hasta el linkado (ELF64).Contexto
29176bb6a(FIX crashes + type system + stubs)