Defects (127)

127 defects annotated from the transcript by subagents, validated by tools/defects.py (every tool id exists, every evidence quote is verbatim in its chunk). Revealed by links to the oracle that found the defect. The last column links to the tool call that first showed the defect, the edits that fixed it and the run that confirmed the fix.

idtypecomponentdefectsymptom / revealed byfirst seen · fixed by · confirmed by
D-C01-01ProductkernelISR stub table in idt_stubs.S used the invalid NASM token-pasting syntax isr_stub_%[i] inside a %rep loop; it had to be rewritten as isr_stub_%+i.
-     dd isr_stub_%[i]
  +     dd isr_stub_%+i
build-error
code-reading; 0 failed attempts
WNryNck7 · rihUr1i8 · X3ZM6ohd
D-C01-02Productkernelstring.c and selftest.c used uint8_t/uintptr types without including <stdint.h>.
+ #include "string.h"

#include <stdint.h>

void *memcpy
build-error
code-reading; 0 failed attempts
jm4eLMdu · 3xp9kX1r, CMwTK4Mr · X3ZM6ohd
D-C01-03ProductkernelAllocator self-test referenced an undefined constant HEAP_SIZE_FOR_TEST for the post-free coalescing allocation; replaced with a literal 512KB.
void *c = kmalloc(HEAP_SIZE_FOR_TEST - 1024);
build-error
code-reading; 0 failed attempts
Q2gzFNkv · w4wNnmtz · iC2nKrN4
D-C01-04Productfsmkfs_tinyfs host tool called an undefined/ad-hoc strlen_local helper instead of including <string.h> and using strlen.
tinyfs_write(name, contents, (uint32_t)strlen_local(contents));
build-error
code-reading; 0 failed attempts
EXT8vJVh · JaEvocSb, ArvmHVm3 · 3u5NDp6N
D-C01-05ProductkernelKernel .bss was never zeroed because objcopy -O binary drops NOBITS sections, so the raw disk-loaded kernel had uninitialized globals; entry.S now zeroes _bss_start.._bss_end.
; Zero .bss: the raw disk-loaded kernel image has no zero-fill
    ; guarantee (objcopy -O binary drops NOBITS sections entirely).
data-corruption
code-reading; in commit message; 0 failed attempts
N9wDKqzy · Kb4pjThS, N9wDKqzy · rT2faZhz
D-C01-07ProductfsA comment in mkfs_tinyfs.c contained 'tests/*.tsh', whose '/*' triggered a nested-comment compiler warning.
Clean kernel build; fixing a minor comment-nesting warning in the host tool.
build-error
build; 1 failed attempts
qEPJpXv5 · bp2gfJqS · XBbGsiFP (os run)
D-C01-09ProductbootAfter raising the kernel budget to 512 sectors, stage2's single INT13h AH=0x42 read of the whole kernel silently failed (SeaBIOS per-call sector limit), so boot hung before SELFTEST; fixed by a 64-sector chunked read loop.
run_tests: FAIL - timed out waiting for 'SELFTEST PASS'
hang
os-test; in commit message; 2 failed attempts
DSZXcFEE (os run) · rMTKZqD2 · H8wtZPfU (os run)
D-C01-08Productlang-scripteval_binop handled TOK_PLUS only in the string-concat branch, so int+int fell through to return 0, making sums 0 and 'i = i + 1' an infinite loop.
`eval_binop` never handles `TOK_PLUS` for two ints — only the string-concat path checks it, so int+int silently falls through to `default: return VAL_ZERO`
hang
os-test; in commit message; 1 failed attempts
oVDH3jU8 (os run) · H6v3XX8H · XBbGsiFP (os run)
D-C09-01Productgamegame.c rng_range() took a modulo of a full-range uint32_t RNG value, which CC compiles as signed idiv, so sign-bit-set values gave a negative index and an out-of-bounds moves[] read (garbage move name, absurd damage).
Found a real bug: `rng_range`'s modulo on a full-range `uint32_t` hits CC's known "signed-`idiv`-only" limitation
wrong-output
manual-qemu-run; in commit message; 1 failed attempts
9Fatjr66 · yei5AAZk · PSbLJXMf
D-C09-05ProductvgaSwitching to mode 13h and drawing clobbered the text-mode font in VGA plane 2, and vga_set_text_mode only restored registers, so the shell showed garbage glyphs after returning to text mode.
drawing in mode 13h clobbers it - text mode "restores" registers-wise but shows garbage glyphs. I need to reload the font into plane 2.
visual
screenshot; in commit message; 1 failed attempts
B2QRFQ16 · 8n172B9o · 1LTz9wXn
D-C09-06Productvgavga_select_font_plane used wrong register values for plane-2 access (SEQ[4] 0x07 with chain bit instead of 0x06, GC[6] 0x00/0x04/0x05 guesses), so the restored font did not land in plane 2.
my font-access values had bits wrong (an extra bit set in SEQ[4], and GC[6] pointing at the wrong addressing mode)
visual
screenshot; in commit message; 4 failed attempts
sYVvaEBF · SaNQHKta, WmXmB8DK, jcsGYmzK · 1LTz9wXn
D-C09-07Productvgavga_set_text_mode restored the font into plane 2 before loading text-mode CRTC/AC registers, but plane-2 writes only land correctly once the CRTC is in a text-like state, so after-restore plane contents were still wrong.
vga_debug_dump_font showed that plane-2 reads/writes at 0xA0000 only land correctly when the CRTC is already in a text-mode-like state
visual
self-test; in commit message; 1 failed attempts
N1AaAb4K · N6pBjghX · 1LTz9wXn
D-C10-01Productgamebattle_gui.c and game.c used brace initializers on non-static local arrays (xs[3], label[4], pow_str[12], parts[4]), which the self-hosted tinyC compiler does not support; rewritten as static arrays or element-by-element assignments.
Confirmed — brace initializers aren't supported for stack locals. Fixing both spots.
build-error
code-reading; 0 failed attempts
zzb9DU9s · woTsu2Vt, DtcvqEF4, eYpa5QZX, bHEnHqeT · VBFtHais
D-C10-02ProductgameBattle scene layout put the player's sprite/platform low on the ground band, so the message box drawn on top of it clipped the player sprite.
The player sprite is getting clipped by the message box. Let me redesign the battlefield proportions so the ground band ends above the box
visual
screenshot; 1 failed attempts
TrMThBAN · bVgMM5mD, P6eGNUPX · XotdmPBc
D-C10-03ProductvgaThe mode 13h CRTC table left the hardware text cursor enabled (cursor-start register 0x0A = 0x00), so a stray cursor dot showed through near the message-box border; set to 0x20 to disable it.
That stray dot near the message-box border is likely the VGA hardware text cursor (still enabled per the reference CRTC table) bleeding through in graphics mode. Disabling it.
visual
screenshot; 1 failed attempts
k8pjAbDu · PSqD4D4d · —
D-C10-04ProductgameEach graphical battle message was overwritten by the next draw right away, too fast for a human to read; added a busy-wait gui_pause (about 1 s per message) because the kernel has no timer interrupt.
messages currently flash by too fast for a human to read before the next state overwrites them
visual
manual-qemu-run; in commit message; 0 failed attempts
tyHqzLeD · 7DQrJB73 · eQHmFTcb
D-C02-02ProductASAS parser evaluated `$` as ctx->org_valid_offset instead of the current section offset.
return val_const((int64_t)(ps->ctx->org_valid_offset));
wrong-output
code-reading; 0 failed attempts
p8A2mtrG · p8A2mtrG · YUdEw4pk
D-C02-03ProductASAS encoder checked operand b instead of a for the `rep stosb` form (wrong operand slot).
the `rep stosb` check reads the wrong operand slot.
wrong-output
code-reading; 0 failed attempts
82h6gJTf · 82h6gJTf · YUdEw4pk
D-C02-04ProductASAS eval_primary folded already-defined labels to their raw section offset at parse time, bypassing ORG adjustment and relocation emission.
`eval_primary` was resolving backward-referenced labels straight to their raw section offset, bypassing the org-adjustment / relocation logic in `stmt_encode` entirely.
wrong-output
code-reading; in commit message; 0 failed attempts
3Bw47ojc · EGyj9a3j, NffCPQJp · YUdEw4pk
D-C02-05ProductASAS ELF output left REL relocation addends as 0 instead of baking them into the relocated bytes (abs32 and pc32 with -4 addend).
for x86 ELF `REL` relocations (implicit addend), the addend must be baked into the actual bytes, not left as 0.
wrong-output
code-reading; 0 failed attempts
P8GLWfLk · PAmdKhbT, 8Sr9sLLL · LkFGk3zC
D-C02-06ProductASAS elf_writer had an unused-but-set variable shidx_rel causing a -Wextra warning; first fix left a remaining use.
elf_writer.c:81:9: warning: variable ‘shidx_rel’ set but not used [-Wunused-but-set-variable]
build-error
build; 1 failed attempts
Fv2sNjFE · KApbDdbW, LyRi8u55 · b7KMMaKt
D-C02-07ProductASAS did not handle a bare-constant jump target with no symbol (`jmp KERNEL_LOAD_ADDR`), failing stage2.S with an empty undefined symbol.
as: undefined symbol ''
build-error
build; 1 failed attempts
aKmwz56p · uLUQToPu · YUdEw4pk
D-C02-08ProductASAS resolve_pcrel's next_ip (address after the relative field) was not ORG-adjusted in -f bin mode while the target was, corrupting every relative jump/call.
`resolve_pcrel`'s `next_ip` parameter wasn't org-adjusted for `-f bin` mode while the resolved target was, corrupting every relative jump/call offset in bin mode.
wrong-output
code-reading; in commit message; 0 failed attempts
aKmwz56p · uLUQToPu · YUdEw4pk
D-C02-09ProductASAS resolved EQUs eagerly at parse time, so forward-referenced CODE_SEG in the far jmp became segment 0, triple-faulting stage2 on mode switch.
`CODE_SEG` (an `EQU`) is used in `jmp CODE_SEG:protected_mode_entry` at the *top* of the file, but not defined until later ... the far-jump's segment silently became 0.
crash-or-exception
cpu-exception; in commit message; 3 failed attempts
BDhPimTt · uT2hwg2w, RkY8oriS, 1W7PuLED, kk24GG4i · 9k6tdMKx
D-C02-10ProductASAS parser only accepted size keywords before a memory operand, so `push dword 0` (size hint on an immediate) in idt_stubs.S failed.
`push dword 0` uses `dword` as an immediate-size hint, not before a memory operand — my parser only handled the `[...]` case.
build-error
build; 1 failed attempts
aMbk9gm7 · wF71SRU6 · 78AiD2fK
D-C02-11ProductASAS used strncpy(..., MAX_NAME-1) without guaranteed termination, triggering -Wstringop-truncation warnings at -O2; replaced with safe_strcpy.
warning: ‘__builtin_strncpy’ output may be truncated copying 63 bytes from a string of length 511 [-Wstringop-truncation]
build-error
build; 2 failed attempts
vHpjfv1n · HnLf7dCK, aBEEMALB, SRE7TADn, QAxUjKtF, Jkg13HNZ · 3p58HE7M
D-C02-12ProductASAS qualify_local used snprintf into a fixed buffer, triggering a -Wformat-truncation warning at -O2; rewritten as a manual bounded copy.
__glibc_objsize (__s), __fmt, ... __va_arg_pack ());
build-error
build; 2 failed attempts
3p58HE7M · favhRSPn · roeFtHUf
D-C03-05ProductASAS parse_mem handled [reg+disp] but not [reg-disp], so 'mov dword [ebp-4], 6' failed to assemble.
as: /tmp/as_ext_test.S:14: expected ] ... `parse_mem` in `AS` only handles `[reg+disp]`, not `[reg-disp]`
build-error
self-test; 1 failed attempts
tRZhmTei · t9JYfT1n · kqEER37k
D-C03-06ProductASAS encode_rm32 had no case for a general-register base like [ebx]; it fell through to the bare-label disp32-direct encoding and silently corrupted the address.
`encode_rm32` had no case for a general register base (like `[ebx]`); it fell through to the "bare label, disp32-direct" branch, silently corrupting the address
crash-or-exception
self-test; in commit message; 1 failed attempts
kqEER37k · g3Ut8LdM · —
D-C03-16ProductASAS ELF writer set a symbol's st_shndx to 1 + section_kind instead of the actual ELF section index, so .bss symbols pointed at the wrong section when .data was absent (segfault at run time).
symbol `st_shndx` was computed as `1 + section_kind_enum` ... Since this file has no `.data` section, `.bss` actually lands at ELF section index 2, not 3
crash-or-exception
toolchain-test; in commit message; 1 failed attempts
efYRLJFH (toolchain run) · wGVX43uQ · ye6JvRgG (toolchain run)
D-C04-12ProductASAS parsed at most 2 operands, silently dropping the immediate of 3-operand 'imul reg, reg, imm' and encoding a self-multiply, which broke array indexing (argv[1] read garbage -> EFAULT/segfault).
`imul ecx, ecx, 4` (3-operand immediate form) is being mis-encoded as the 2-operand `imul ecx, ecx`, silently dropping the multiply-by-4 scale
crash-or-exception
self-test; in commit message; 3 failed attempts
hpd19paT · B6WkB18Q, 4HM23snt, hujuHXFM, LoCW5XDF · qS3JQXL8
D-C04-16ProductASAS had no encoding for register-indirect 'call r32' (FF /2), needed by CC's new indirect-call codegen.
call r/m32 (FF /2) - indirect call through a register, e.g. a function-pointer variable's loaded value
build-error
code-reading; 0 failed attempts
XKtY6Y9u · B35GetAU · wcycFu2e
D-C05-07ProductASAS lacked the 32-bit register-indirect forms of lidt/lgdt (e.g. lidt [ecx] emitted by CC's builtins); lgdt only had the hardcoded 16-bit disp16 form.
as: line 148: unsupported instruction form: lidt
build-error
build; in commit message; 1 failed attempts
SUxKa7Ek · xThuwuLC · cyuaX7rg (toolchain run)
D-C05-14ProductASAS's far-jump encoder always emitted a 16-bit offset, so in 32-bit code `jmp 0x08:label` in gdt_flush was 2 bytes short, which caused a GPF and then a triple fault at boot.
the far-jump encoder always writes a 16-bit offset (`e16`), but in 32-bit mode the `EA` far-jump instruction needs a 32-bit offset — it's 2 bytes short
crash-or-exception
cpu-exception; in commit message; 2 failed attempts
eFUksXH7 (os run) · d33rUByF · NMaAXq1d (os run)
D-C06-02ProductASAS had no 32-bit-mode mov r16, r/m16 / mov r/m16, r16 memory forms (e.g. mov ax,[eax] / mov [ecx],ax), which the new 16-bit codegen needed.
Let me add the 32-bit-mode `mov r16, m16` / `mov m16, r16` forms right after the register-to-register 16-bit form
other
code-reading; in commit message; 0 failed attempts
MdhwGod5 · 2QEipNrn · ji9Gk77E (toolchain run)
D-C06-03ProductASAS encoded movzx r32, r16 (register form) with a spurious 0x66 prefix, turning movzx eax,ax into movzx ax,ax so the upper 16 bits were never cleared.
`movzx eax, ax` (register-to-register form) incorrectly emits a `0x66` operand-size prefix, turning it into `movzx ax, ax` (a no-op)
wrong-output
toolchain-test; in commit message; 4 failed attempts
rA7uSdUp (toolchain run) · QEoAXVvs · ji9Gk77E (toolchain run)
D-C06-04ProductASAS encoded in ax,dx (and out dx,ax) without the 0x66 operand-size prefix, so each inw read 32 bits from the ATA data port, dropping every other word and making tinyfs mount fail (bad superblock magic).
`in ax, dx` is missing its `0x66` operand-size prefix — it's encoding a 32-bit `in eax, dx` instead, which reads **two words** from the ATA data port per call
data-corruption
os-test; in commit message; 1 failed attempts
kyyRPtLk (os run) · L6G4SdRB · hczG9Hth (os run)
D-C06-12ProductASAS fixed limits (MAX_STMTS 4096, MAX_SYMS 512, MAX_RELOCS 256) were too small for the larger struct-copy codegen output of eval.c, aborting the build.
as: too many statements
make: *** [Makefile:108: build/lang/script/eval.o] Error 1
build-error
build; in commit message; 1 failed attempts
gfxG5CmA (os run) · LnzXmCjP · WzSyK1xW
D-C07-02ProductASelf_format.h (AS and LD copies) defined ELF32_ST_INFO/R_SYM/R_TYPE/R_INFO as function-like macros, unsupported by CC's preprocessor; converted to static inline functions.
cc: toolchain/ld/elf_format.h:106: undeclared identifier (near 'info')
build-error
build; in commit message; 1 failed attempts
pLyMQgGf · B1HU8fYM, rTbrn7Ua · 8RkVpfXY
D-C07-04ProductASThree compound literals in AS/LD source ((token_t){.kind=TK_EOF}, (Elf32_Sym){0} x2) that CC does not support; replaced by memset + field assignment.
cc: toolchain/ld/link_flat.c:105: expected expression (near '?')
build-error
build; in commit message; 1 failed attempts
pLyMQgGf · DWtENFdM, jUSFGCcv, 1aC38EKv · c8uc94at
D-C07-07ProductASAS pass2 wrote real zero bytes for .bss into a fixed 64KB section buffer; CC-generated code with a ~20MB .bss (AS's own ctx) overflowed it and segfaulted.
Segmentation fault      (core dumped) ./build/toolchain/as -f elf32 -o /tmp/y.o build/stage2/toolchain_as_elf_writer.S
crash-or-exception
build; in commit message; 3 failed attempts
eqPCLh7z · Fz2vCF3A · U6UVcnMn
D-C08-03ProductASAgent reverted debug-instrumented encode.c and elf_writer.c with `git checkout --`, which also discarded earlier uncommitted fixes (the .bss NULL-dst fix, elf32_st_info/r_info inline-function calls, the Elf32_Sym compound-literal replacement) that then had to be re-applied.
grep -n 'SEC_BSS.*NULL\|dst = (sec == SEC_BSS)' toolchain/as/encode.c
[OUT] ...(Bash completed with no output)
other
code-reading; 0 failed attempts
ama1ncCf · Ufbn9QDY, z3TGm1za, z12KHmNY · eNCN4z9d
D-C08-08ProductASAS's .dq directive computed the high dword with `v >> 32`, a no-op under x86 shift-count masking once int64_t is CC's 32-bit alias, so self-hosted AS corrupted boot.S's DAP LBA field and the OS never got past the boot sector.
run_tests: FAIL - timed out waiting for 'SELFTEST PASS' ... boot.bin: DIFFERS ... 77   0   1 ... dq 1 ; starting LBA
hang
os-test; in commit message; 3 failed attempts
PyPbF44A (os run) · QVyCvfPZ · ev988HNP (os run)
D-C03-01ProductCCCC preprocessor's #define body loop read the first token of the next line to detect end-of-body and silently discarded it (no token pushback in the lexer).
the `#define` body-reading loop consumes the *next* line's first token to detect the boundary, then silently discards it
wrong-output
code-reading; 0 failed attempts
takbHEij · T2FxLv15, KpiicaHp, dDA8DejY, m33scuj3 · 6EKnXYoR
D-C03-02ProductCCCC parser read array bounds and enum values as a single literal token, but the codebase's macro constants expand to arithmetic expressions like (1 + 1).
array bounds in this codebase include computed macro constants (e.g. `TINYFS_INODE_BLOCK` expands to `(1 + 1)`, not a single literal)
wrong-output
code-reading; 0 failed attempts
4GttoGg6 · ujwSQUM8, ezAGHE2u · qz5hmb4N
D-C03-03ProductCCA comment in CC's parser.c contained '/*' inside a comment, triggering a -Wcomment build warning.
parser.c:176:14: warning: ‘/*’ within comment [-Wcomment]
build-error
build; 1 failed attempts
8SB2tp19 · sK7utKG8 · bUtMRGPi
D-C03-04ProductCCCC preprocessor only accepted #include "file" and rejected angle-bracket header names like #include <stdint.h>.
cc: tests/toolchain/t01_basic.c:1: expected "file" after #include
build-error
self-test; 1 failed attempts
1vV1o9vc · v8Qn3dgf, vo8vAZYB, RqYyWnRP · 6EKnXYoR
D-C03-07ProductCCCC codegen's compound assignment kept &a in a register that was clobbered (idiv/cdq) while computing the new value (ordering bug).
ordering bug in compound-assign ... a register copy of it wouldn't survive an idiv/cdq
wrong-output
code-reading; 0 failed attempts
T8TABwEQ · 82uypMSp · SFJy1KXB
D-C03-08ProductCCCC codegen emitted an xchg instruction that AS does not support.
unnecessary `xchg` that AS doesn't support
build-error
code-reading; 0 failed attempts
T8TABwEQ · GVo4XuDb · SFJy1KXB
D-C03-09ProductCCCC codegen_emit's loop declaring externs for called-but-undefined functions was broken, and string literals were never emitted.
broken extern-declaration loop, missing string-literal emission
wrong-output
code-reading; 0 failed attempts
T8TABwEQ · 2jTkmScu · SFJy1KXB
D-C03-10ProductCCCC's walk_collect emitted string-literal bytes immediately during the extern-collection pass, before any section directive, corrupting the assembly output.
`walk_collect` emits string-literal bytes immediately during the extern-collection pass, before any `section` directive exists, corrupting the output
wrong-output
code-reading; 0 failed attempts
2jTkmScu · kaWF2SDs · SFJy1KXB
D-C03-11ProductCCCC codegen's local ND_VAR_DECL handling used a goto into another branch and the for-init handling did not walk multiple declarators.
fragile `for`-init handling ... Now the `ND_VAR_DECL` goto mess and `ND_FOR` init handling
wrong-output
code-reading; 0 failed attempts
T8TABwEQ · 1rxihEBP, 2eGM4jdm · efYRLJFH (toolchain run)
D-C03-12ProductCCCC host-target _start code was emitted after the .rodata section switch, so it would land in .rodata instead of .text.
the `_start` code for host target got placed after the `.rodata` section switch, so it would land in `.rodata` instead of `.text`
wrong-output
code-reading; 0 failed attempts
kaWF2SDs · tyn8ZWv2 · SFJy1KXB
D-C03-13ProductCCCC's __builtin_outb codegen contained dead scratch code.
That `__builtin_outb`/`__builtin_gdt_flush` code is genuinely broken (dead scratch code, and a hardcoded label that would collide on repeated calls)
wrong-output
code-reading; 0 failed attempts
nUmfh4du · VgJKJNwC · dxwr9ay6
D-C03-14ProductCCCC's __builtin_gdt_flush emitted a hardcoded label that would collide if the builtin was used more than once.
a hardcoded label that would collide on repeated calls
build-error
code-reading; 0 failed attempts
nUmfh4du · VgJKJNwC · —
D-C03-15ProductCCCC codegen.c used va_start/va_end without including <stdarg.h>, so it failed to compile.
codegen.c:28:5: error: implicit declaration of function ‘va_start’
build-error
build; 1 failed attempts
ygZcwDe3 · WCK75Kr9 · cJje3M9j
D-C03-17ProductCCCC computed struct member offsets lazily in type_size(), which nothing called at definition time, so ./-> accesses used offset 0 for every member.
FAIL t05_structs: expected 17, got 15 ... struct member offsets are computed lazily inside `type_size()`, but nothing calls `type_size()` at struct-definition time
wrong-output
toolchain-test; in commit message; 1 failed attempts
ye6JvRgG (toolchain run) · 9YcxzF8U · rtdqfrR1 (toolchain run)
D-C03-19ProductCCCC ignored the static storage class on functions and emitted every function as global.
fix one known gap (static functions incorrectly emitted as `global`) ... (void)is_static;
wrong-output
code-reading; 0 failed attempts
o7YHjhgH · muF7VVFB, UCUJpceg · Bbtpvnpt (toolchain run)
D-C03-20ProductCCCC preprocessor's resolve_include used snprintf into a fixed buffer, causing a format-truncation warning in the -O2 build.
Let me fix this warning the same way I handled the similar one in `AS` — manual bounded concatenation instead of `snprintf`.
build-error
build; 1 failed attempts
9P7RL9bG (toolchain run) · 5xSDg7Ug · rwFfycPN (toolchain run)
D-C04-02ProductCCCC's -I option only accepted the separated form '-I dir', not the gcc-style combined '-Ikernel' used by the Makefile, so kernel headers were not found.
`CC`'s `-I` parsing only supports the separated form (`-I dir`), but the actual Makefile uses the combined form (`-Ikernel`)
build-error
build; 1 failed attempts
uZPUzozH · WX82y3kV · mCA1wT95
D-C04-03ProductCCCC's argument parser treated any unrecognized flag (-Wall, -O2, -c, ...) as the input filename.
`CC`'s arg parser treats *any* unrecognized flag as the input filename
build-error
code-reading; 0 failed attempts
uZPUzozH · Dr7qWvEL · mCA1wT95
D-C04-04ProductCCCC preprocessor reused a static per-depth path buffer for sibling #includes while token_t.file kept a raw pointer into it, so earlier tokens' filenames were retroactively overwritten (errors reported in string.h instead of tinyfs.h).
`paths[depth]` is a static buffer reused by *every* `#include` at the same nesting depth ... `token_t.file` stores a raw pointer into it
wrong-output
build; in commit message; 3 failed attempts
mCA1wT95 · KT85R4Np · QvQeCZhE
D-C04-05ProductCCCC preprocessor expanded macros only one level deep, so macro bodies referencing other macros (TINYFS_DATA_BLOCK -> TINYFS_INODE_BLOCK) left undeclared identifiers.
The actual failure is nested macro expansion only recursing one level deep.
build-error
build; in commit message; 4 failed attempts
mCA1wT95 · EYJMViQh, eJUM9GAt · TvwcLrLh
D-C04-06ProductCCCC's perr reported the token after the failing identifier (parser had already advanced), producing misleading 'near ?' diagnostics.
`perr` reads `p->toks[p->pos]`, but by the time `resolve_ident` calls it, the parser has already advanced past the actual failing identifier
wrong-output
build; 2 failed attempts
mCA1wT95 · iyoATcQV, LvhhhCxm, 757yr5n8, upr92nLK · PFqLVCbs (toolchain run)
D-C04-07ProductCCCC's host _start did a bare 'call main', so argv received argv[0]'s value instead of the address of the argv array.
`_start: call main` doesn't set up `argc`/`argv` per the Linux process-entry ABI ... `argv` receives `argv[0]`'s string-pointer value instead of the array pointer
crash-or-exception
code-reading; in commit message; 0 failed attempts
78cqDDcW · 7e6BaVwJ · qS3JQXL8
D-C04-08ProductCCCC did not recognize 'long' as a type keyword, so mkfs_tinyfs.c's 'long offset' failed to compile.
`long` isn't a recognized type keyword in CC's dialect at all — `mkfs_tinyfs.c` uses it
build-error
build; 2 failed attempts
w7fYpY8R · jcQgC5vr, TsQ8MUpW, s9Lv2UFi, nv3P9tJ8 · txZgqcLq (toolchain run)
D-C04-09ProductCCCC codegen called walk_collect (which recurses into ->next) on every top-level node inside a loop over ->next, quadratically duplicating string literals/externs and causing duplicate labels in AS.
the first call already walks the entire rest of the top-level chain, and then the loop re-walks the tail again on every subsequent iteration
build-error
build; in commit message; 1 failed attempts
jbf2VWfR · wK9r4DpP · rJmbo8be
D-C04-10ProductCCCC never allocated storage for function-local static variables (only top-level decls were scanned for .data/.bss), leaving __static_N references unresolved.
without this they'd be referenced (lea eax, [__static_N]) but never ac[tually allocated]
build-error
build; in commit message; 2 failed attempts
GfgegWVZ · WE58qKKP, EkQL8CjN, pfTeU3HS, mo8JxqoE · 5QuTMNsD
D-C04-11ProductCCCC emitted _start/'call main' in every --target=host translation unit, so objects without main (tinyfs.c, string.c) failed with unresolved 'main'.
`_start`/`call main` gets emitted into *every* `--target=host` compilation unit, not just the one that actually defines `main`
build-error
build; in commit message; 3 failed attempts
GfgegWVZ · mXUXH5HG · LLYkPmGr
D-C04-14ProductCCCC codegen dereferenced a bare function name used as a value (callback argument) instead of decaying it to its address, passing 4 bytes of machine code as the function pointer.
a bare function name used as a value ... must decay to its address, not be dereferenced — it was reading 4 bytes of the function's own machine code
crash-or-exception
self-test; in commit message; 1 failed attempts
u6YRTucV · NyS8b1Qb · wcycFu2e
D-C04-15ProductCCCC always emitted a direct symbol call even when calling through a function-pointer variable (tinyfs's block_read/block_write), jumping to the variable's storage instead of the pointed-to function.
SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x400000}
crash-or-exception
self-test; in commit message; 1 failed attempts
cDvqr7XF · EM1pGSjg, 5u3o5dXB, 4GdBw4ZC, sJ5asAaN · wcycFu2e
D-C05-01ProductCCCC registered a struct tag only after parsing its body and allocated a fresh type on definition, so self-referential members (struct block_header *next) and forward-declared tags (typedef struct ast_node ast_node_t before the definition) failed to resolve.
self-referential structs ... the struct's own tag only gets registered into the symbol table *after* its body is parsed
build-error
build; in commit message; 1 failed attempts
DQUBcJmJ · qH4NDjSh · R3KTrw3W
D-C05-02ProductCCCC's parser had no switch/case/default support at all, so vm.c's bytecode dispatch loop and lexer.c failed to parse.
`switch`/`case` isn't implemented in CC's parser at all — a real, substantial gap
build-error
build; in commit message; 2 failed attempts
DQUBcJmJ · gNRc6z7N, U6FnHXdQ, 9MQPAnQy · R3KTrw3W
D-C05-03ProductCCCC's parameter-list parser did not handle function-pointer parameters of the form TYPE (*name)(PARAMS), so script/parser.c and compiler/parser.c failed to parse.
FAIL kernel/lang/compiler/parser.c: cc: kernel/lang/compiler/parser.c:130: unexpected token (near '?')
build-error
build; in commit message; 1 failed attempts
R3KTrw3W · MwwYJn2P · jatCaCcg
D-C05-04ProductCCCC's initializer parser did not support designated initializers, so eval.c's VAL_ZERO = { VAL_INT, { .i = 0 } } failed to parse; worked around by rewriting it positionally in the kernel source.
`VAL_ZERO`'s designated initializer (`{ .i = 0 }`) is a real gap — CC's initializer parser has no support for designated initializers at all.
build-error
build; 1 failed attempts
jatCaCcg · dQufw2x4 · 8k3ALiT8
D-C05-05ProductCCCC declared ND_COMMA but never implemented the comma operator in parser or codegen, so for-loop increments like `pn = pn->next, i++` failed to parse.
`ND_COMMA` was declared but never actually implemented anywhere — the comma operator (`pn->next, i++` in a for-loop increment) simply doesn't parse.
build-error
build; in commit message; 1 failed attempts
8k3ALiT8 · gz8TG7Td, WJPGHBGS · 4PwA3CVE
D-C05-08ProductCCCC codegen only supported brace-init lists for globals; local aggregate initializers like `exec_result_t r = { EXEC_NORMAL, VAL_ZERO };` failed to compile.
local (stack) variables ARE brace-initialized in this codebase (`exec_result_t r = { EXEC_NORMAL, VAL_ZERO };`), contrary to the existing assumption that only globals use brace-init
build-error
build; 1 failed attempts
cyuaX7rg (toolchain run) · 6aQJbVaA, XqSazhuA · rkwt9n11 (toolchain run)
D-C05-09ProductCCCC's emit_data_bytes had no struct/union path for global .data initializers, silently emitting wrong bytes for brace-initialized struct globals.
properly implement struct-initializer support for both the global `.data` path (which has a silent-corruption bug, not just a crash)
data-corruption
code-reading; 0 failed attempts
dqv9j2TK · shrWpuTP · thZd1wY2 (toolchain run)
D-C05-10ProductCCCC marked per-file generated labels __str_N and __static_N as global, so linking several translation units hit duplicate-symbol errors.
ld: duplicate symbol '__str_0' (from build/idt.o)
build-error
build; 2 failed attempts
Pqmz7nSu · YRqdZH4a, Mp4hnGf9 · QY2rK5if
D-C05-12ProductCCCC gave extern variable declarations (extern uint32_t isr_stub_table[32];) their own .bss/.data storage and never emitted an `extern NAME` directive for them, which AS requires for undefined symbols.
`extern` variable declarations get treated as real definitions, allocating their own `.bss`/`.data` storage instead of just referencing the symbol defined elsewhere
build-error
build; 1 failed attempts
QY2rK5if · 3NLnWHpz, afzBgjLi, NngCnpZY · FYHEorz3 (toolchain run)
D-C05-13ProductCCCC's earlier walk_collect dedup fix nulled n->next while recursing, which cut off prog's chain during the is_local scan, so forward-referenced functions defined later in the file (parse_statement) were wrongly declared extern.
temporarily nulling `n->next` before recursing) corrupts `prog`'s chain *while it's being scanned* by `is_local`'s check
build-error
build; in commit message; 1 failed attempts
AXgW4JXX · pXinP6eY, MyXrKrhG · 2zabgwXj
D-C05-15ProductCCCC's walk_collect treated indirect calls through function-pointer variables (tinyfs.c's block_read(...)) as calls to extern functions and emitted a spurious `extern block_read`.
with indirect calls (my earlier fix), the callee can be a variable — it spuriously emits `extern block_read` even though `block_read` gets a real local definition later
wrong-output
code-reading; in commit message; 0 failed attempts
3Kj6uDmu · keoRXLFr · 4ZVUL6Pv (toolchain run)
D-C05-16ProductCCCC's parse_global_var always set external linkage, so file-scope static variables (block_read/block_write in tinyfs.c) were emitted as global symbols.
`parse_global_var` unconditionally sets `n->is_global = 1` regardless of the `static` keyword — every file-scope `static` variable ... gets external linkage
wrong-output
code-reading; in commit message; 0 failed attempts
NiJYWbtH · 67xqJ5oE, QjZ5DB1t, 1X9XzYQm, KDY4q1fQ, acCoM9Kt · iVoUrqU2
D-C06-01ProductCCCC load_value/store_value had no 16-bit case, so a uint16_t store (p[i] = inw(...)) emitted a 4-byte mov [ecx], eax, doubling every write into the ATA sector buffer and corrupting kernel memory.
`p[i] = inw(...)` where `p` is `uint16_t*` generates `mov [ecx], eax` (a 4-byte store) instead of a 2-byte store
data-corruption
code-reading; in commit message; 1 failed attempts
1jCb5puN · M1xxQNTq · ji9Gk77E (toolchain run)
D-C06-05ProductCCCC never inferred array_len for a global `T name[] = {...}`, so sizeof(lower_table) was 0, TABLE_LEN was 0 and keyboard_getchar discarded every scancode, leaving the shell with no keyboard input.
Our parser never computes the actual length for `[]` (leaves `array_len = -1`), so `sizeof(lower_table)` evaluates to 0
hang
os-test; in commit message; 6 failed attempts
hczG9Hth (os run) · bZdAXjDz · dTH61jV7 (os run)
D-C06-06ProductCCThe array-size inference fix only covered globals; function-local `static const T ops[] = {...}` (script parser operator tables) still got size 0.
these are `static` *local* array declarations with inferred size, a case my earlier fix (scoped to globals only) didn't cover
wrong-output
os-test; in commit message; 1 failed attempts
dTH61jV7 (os run) · cijSRtGi · 4ig98Kw5 (toolchain run)
D-C06-09ProductCCCC had no struct/union by-value assignment: `*p = save;` copied only 4 bytes of parser_t, corrupting the script parser's backtracking state ('script: parse error: unexpected token').
struct-by-value assignment/copy isn't supported at all — ... silently copying just 4 bytes of a ~90+ byte `parser_t` struct
wrong-output
os-test; in commit message; 1 failed attempts
wq3PVpfE (os run) · 3rx6Gc29, kxhaaXwZ · pfZy5xpC (toolchain run)
D-C06-10ProductCCCC did not support struct-returning functions (no hidden-pointer ABI), so eval.c's mkint()/mkstr() value constructors returned garbage and `run hello.tsh` printed '2 2' in an endless loop.
This requires implementing struct-by-value function returns (the classic "hidden pointer" ABI pattern)
hang
os-test; in commit message; 3 failed attempts
BK6A1cuV (os run) · FhWyBpZx, KFGpyge7, ZjEYf228, 9EkLEWbW · rj7LcpQ5 (os run)
D-C06-11ProductCCCC passed struct/union parameters as a flat 4 bytes instead of copying the whole struct onto the stack (used by print_value(value_t v)).
FAIL t14_struct_return: expected 44, got 145
wrong-output
toolchain-test; in commit message; 1 failed attempts
jZhApn6D (toolchain run) · iRTBeHRR, yXXcMF2q · sk27sg4C (toolchain run)
D-C06-13ProductCCCC's read_escape had no case for \b (or \f, \v, \a), so '\b' lexed to the letter 'b' and every typed 'b' in the shell was treated as a backspace ('build' arrived as 'uild').
`read_escape` doesn't handle `\b` (backspace) at all, so it falls through to the `default: return c;` case, returning the literal letter `'b'`
wrong-output
os-test; in commit message; 6 failed attempts
iaN3rAiL · DxJccFvg · yJ6zGae6 (os run)
D-C07-03ProductCCCC's own lexer.c used a function-like TWO(c1,c2,kind) macro for two-char operators, which CC itself cannot preprocess; replaced by a try_two helper.
Not a function-like macro (CC's preprocessor only supports object-like #define
build-error
build; 1 failed attempts
pLyMQgGf · FqKtq9bQ, YPUgbCc6 · c8uc94at
D-C07-05ProductCCCC's declarator parser accepted only one [N] group, so multi-dimensional arrays (g_externs[MAX_EXTERNS][MAX_NAME], param_names[16][MAX_NAME]) failed to parse; parse_array_dims added with correct outer-to-inner nesting.
cc: toolchain/cc/codegen.c:655: unexpected token (near '?')
build-error
build; in commit message; 2 failed attempts
pLyMQgGf · dtpNCQyR, KenitQ8m, q41YDPVw · c8uc94at
D-C07-06ProductCCcodegen_addr had no case for a struct-returning ND_CALL used as an lvalue (line_peek(ln).kind in AS's parser.c), aborting codegen with an internal error.
cc: internal error: not an lvalue (kind 17) name='line_peek' a_kind=-1 a_name='' g_cur_func='eval_primary'
build-error
build; in commit message; 2 failed attempts
dX4QgXb5 · ZrmZ3i1w · sprrEJH7
D-C07-11ProductCCparse_param_list decayed every bracket group of an array parameter to a pointer, typing char names[][MAX_NAME] as char** instead of char(*)[MAX_NAME]; Stage2 CC segfaulted on any function with parameters.
Only the *outermost* dimension decays to a pointer - `T x[][M]` as a parameter is `T (*x)[M]`, not `T**`.
crash-or-exception
toolchain-test; in commit message; 7 failed attempts
bWhYR4Uf (toolchain run) · YLqdqHg4, LPvdGcmd · jym3ECSD
D-C07-12ProductCCA partial local brace-init (line_t ln = {0};) only initialized the listed elements and left the rest of the aggregate as stack garbage, sending Stage2 AS's line loop into a multi-million-iteration spin that looked like a hang.
as: build/toolchain_tests/t01_basic.S:18263733: expected directive/instruction
hang
toolchain-test; in commit message; 4 failed attempts
W2LMQ6kX (toolchain run) · kfuo3GUU · z47TEwTm
D-C07-13ProductCCA string-literal initializer for a pointer-typed struct field in a global array (AS's REGS[] register table) was emitted as a null dd instead of a relocation to the string label, so Stage2 AS segfaulted in reg_lookup.
DBG: reg_lookup entered name=ebp count=31
DBG: i=0 REGS[i].name_is_null=1
crash-or-exception
toolchain-test; in commit message; 9 failed attempts
z47TEwTm · 1uoVpqic · —
D-C08-01ProductCCCC's parse_one_local_decl called add_local (which sizes and allocates the stack slot) before parsing the initializer, so an unsized local array like is_type_start's `const char *kws[] = {...}` got a zero-size slot whose initialization clobbered the frame; Stage2 CC segfaulted on any program containing a local declaration.
DBG: is_type_start entered
DBG: kws array built, kws[0]=void
DBG: i=0 kws[i]=void
exit=139
crash-or-exception
toolchain-test; 12 failed attempts
zAWdrNdi (toolchain run) · 7xb731Ny · Cr4uXxb5
D-C08-02ProductCCCC compiled pointer-minus-pointer (elf_writer.c's `s - ctx->syms`) as pointer arithmetic (result typed as pointer, scaled by multiply) instead of an integer element count, corrupting the relocation symbol index and making Stage2 AS segfault on any input with a relocation.
DBG: rel i=0 sym=g_inodes
DBG: found sym, computing symidx
crash-or-exception
toolchain-test; in commit message; 14 failed attempts
C6ejtmWN (toolchain run) · YWH26ZMe, sLLT9nYw · eNCN4z9d
D-C08-05ProductCCCC's parse_struct_members had its own multi-dimensional array loop that nested array types in the wrong order (the bug already fixed in parse_declarator), so AS's 2-D struct member section buffers were mislaid and Stage2 AS wrote .data bytes into the .text section, producing crashing binaries (t11/t12).
Found it — `parse_struct_members` has its own unfixed multi-dimensional array parsing loop (the same bug I fixed earlier in `parse_declarator`, but never applied here).
byte-mismatch
toolchain-test; in commit message; 4 failed attempts
NpR6ihBd (toolchain run) · 9YpBpoFU · xXaRFvpA (toolchain run)
D-C08-06ProductCCCC did not support `char x[N] = "literal"` (unbraced string init of a char array) for globals or locals; codegen's local `char default_label[MAX_NAME] = ""` left garbage, so Stage2 CC emitted `jmp Z` for a switch default.
as: relocation against unknown symbol 'Z' ... char default_label[MAX_NAME] = "";
wrong-output
toolchain-test; 2 failed attempts
6qjovh4Q (toolchain run) · tBm7ihqQ, LQoMpQiL · xXaRFvpA (toolchain run)
D-C03-21ProducthostlibThe libc-free mkfs_tinyfs rewrite used #if defined(__TINYC__), which CC's preprocessor does not support; the syscall shim had to move into its own file.
I used `#if defined(__TINYC__)`, but CC's preprocessor explicitly doesn't support `#if`/`#ifdef`
build-error
code-reading; 0 failed attempts
6xtJCBB5 · JGjJgazt, 713HvMkx, eJ9joDR7 · KT4GqYQK
D-C04-01ProductLDLD's classify_section() matched section names exactly, so nasm's '.text.entry' section in entry.o was dropped and _start vanished from the linked kernel (isr_stub_0 landed at the entry address).
entry.o built by NASM ... names its section `.text.entry`, not `.text`, and my `classify_section()` only matched the exact string, silently dropping `_start`
wrong-output
manual-qemu-run; 2 failed attempts
ti6Z6LRs · Wvmd3jqc · Ef16BSXt
D-C07-01ProducthostlibCC had no libc headers or runtime for --target=host, so AS/CC/LD's own source (stdio/stdlib/string/ctype/sys/stat) could not even be preprocessed; a minimal toolchain/include + toolchain/hostlib with __sys_brk/__sys_chmod builtins was added.
cc: toolchain/ld/main.c:4: cannot find include file 'stdio.h'
build-error
build; in commit message; 1 failed attempts
GrQ2rRiX · CfPrhks5, hpTTmQpE, ZCyB5W7X, 2Rs2t96D, B6Qw1KLJ, P3SByssR, pbYNdmJY, nYuSPAP9, 3S9Gt9Uz, PebJhP31, biZXLe4R, aBnxapjC, 2hAGbgP3 · c8uc94at
D-C07-08ProductLDLD's per-file symbol/relocation limits (512) and MAX_OUT_SYMS (2048) were too small for encode.o's 800+ symbols.
ld: build/stage2/toolchain_as_encode.o: too many symbols
build-error
build; in commit message; 1 failed attempts
4bPE5KMJ · StKVP24f, y8p3KDp6 · EfceXBah
D-C07-09Producthostlibhostlib had a chmod declaration in sys/stat.h but no implementation, so linking Stage2 LD failed with an undefined symbol; stat.c added.
build/stage2/ld: cannot open `build/stage2/ld' (No such file or directory)
build-error
build; 1 failed attempts
tSp8EVr3 · nsjYwyRp · y2PZprXd
D-C07-10Producthostlibhostlib lacked strtoul (used by ld/main.c for --flat-base), leaving an undefined symbol when linking Stage2 LD.
toolchain/ld/main.c:128:            flat_base = (uint32_t)strtoul(argv[++i], NULL, 0);
build-error
build; 1 failed attempts
tfKzcZQ8 · JK7Xoey8, KEzw5ioD · y2PZprXd
D-C08-04ProductLDLD's chmod(path, 0755) was read by CC as decimal 755 (CC's lexer has no octal literals), so Stage2-linked executables got nonsense permissions (octal 1363, -wxrw--wt).
--wxrw--wt 1 martin martin 305 Jul 19 05:24 /tmp/t11 ... decimal 755 = octal 1363
wrong-output
manual-run; in commit message; 1 failed attempts
C7dXFaWM · nHNvfB5D · xXaRFvpA (toolchain run)
D-C01-06ProductbuildMakefile used host:fs seed spec pairs (tests/hello.tsh:hello.tsh) directly as disk image prerequisites, which are not valid file targets; split into MKFS_SEED_FILES and MKFS_SEED_SPECS.
# host-path:fs-name pairs seeded into every disk image; the host paths
# alone are listed separately so they can be used as make prerequisites
build-error
code-reading; 0 failed attempts
nzM9SZPX · Hn5UbBDM, Jx1A5itk · qEPJpXv5
D-C01-10ProductotherREADME demo transcript listed a hand-written placeholder size for hello.tc (206) that did not match the real disk image (272).
updating the exact sizes (281/272 vs my placeholder 281/206)
wrong-output
manual-qemu-run; in commit message; 1 failed attempts
C5Jbz5cY · xgYeKLye · —
D-C02-01Productbuild`make run` used -display none, so there was no input surface for the emulated PS/2 keyboard and the user could not type into the shell; a run-gui target was added.
Root cause: `make run` uses `-display none`, so there's no window at all — no window means no input surface for the emulated PS/2 keyboard.
other
manual-qemu-run; 1 failed attempts
8yDpoTAp · 4w1qJXaA, spqViNos · —
D-C05-06ProductbuildThe new self-hosted Makefile referenced $(BUILD) in := assignments before BUILD was defined.
Right, `BUILD` needs to be defined before it's referenced with `:=`.
build-error
code-reading; 0 failed attempts
u8ZTx3vK · pEJ4qx84 · SUxKa7Ek
D-C05-11ProductbuildThe Makefile did not make compiled objects depend on the CC/AS binaries, so after rebuilding CC, stale .o files were reused and the old duplicate-symbol error came back until make clean.
Stale objects — Make doesn't track that `CC`'s own source changed. Let me force a clean rebuild.
build-error
build; 1 failed attempts
hEGBxaSn · — · —
D-C08-07ProductbuildThe Makefile's toolchain rule still used the old plain-gcc bootstrap instead of the new 3-stage bootstrap_selfhost.sh, so `make` did not build the OS with the verified self-hosted toolchain.
The OS build used the old plain-gcc bootstrap rule, not the new 3-stage self-hosting script.
other
build; in commit message; 1 failed attempts
3BSDa4cu · mHsQ4ujF · PmV6tR8d
D-C03-18Oracle toolingtest-harnessrun_toolchain_tests.sh had no expected exit code for the t02_types fixture, so it was silently skipped and never executed.
SKIP t02_types (no expected value registered)
other
toolchain-test; 0 failed attempts
efYRLJFH (toolchain run) · brR7AjPP · 86WUXdG3 (toolchain run)
D-C04-13Oracle toolingtest-harnessToolchain test t04_pointers passed despite the broken imul encoding because writes and reads used the same wrong index formula, so the battery could not detect the bug.
It self-cancels in `t04_pointers` because both the write (`nums[i]=`) and read (`a[i]`) use the same broken formula
other
code-reading; in commit message; 0 failed attempts
UeYwZcbD · — · —
D-C04-17Oracle toolingtest-harnessAd-hoc pipeline verification commands printed success lines ('CC: all three compiled OK', 'AS: all three assembled OK', 'LD: linked OK', cmp 'IDENTICAL') after steps had failed, hiding the failures and confusing the diagnosis.
ld: cannot open /tmp/mkfs_build/tinyfs.o
LD: linked OK
other
code-reading; 4 failed attempts
w7fYpY8R · — · etmxgztP
D-C04-18Oracle toolingqemuBooting QEMU with '-serial stdio' under timeout piped to head produced no output (exit 143), so the boot check had to be redone with serial to a log file and a backgrounded QEMU.
Let me use the same pattern (serial to a log file, background QEMU) instead of `-serial stdio` under `timeout`.
other
manual-qemu-run; 1 failed attempts
aij33AGw · — · XJiF3g8N
D-C06-07Oracle toolingtest-harnessBlock comments in the new t12 regression test (and the matching parser.c comment) contained the path kernel/lang/*/parser.c, whose `*/` closed the comment early so CC failed to parse the test.
My comment text contained a literal `*/` sequence, prematurely closing the C block comment.
build-error
toolchain-test; 3 failed attempts
wKu3q8vB (toolchain run) · NWA6kUjL, xKM5hNw3 · 4ig98Kw5 (toolchain run)
D-C06-08Oracle toolingtest-harnessqemu_type.py's keymap has no mapping for '(' and similar characters, so ad-hoc scripts with call syntax could not be typed into the shell for diagnosis.
ValueError: qemu_type: no key mapping for '('
other
manual-qemu-run; 1 failed attempts
VDq1Sa62 · — · —
D-C08-09Oracle toolingtest-harnessAgent's ad-hoc kernel rebuild script put all objects in one flat directory, so two parser.c objects collided and the link failed with a duplicate symbol.
ld: duplicate symbol 'tc_parser_init' (from /tmp/kbuild/parser.o)
build-error
build; 1 failed attempts
tZ6TK44Y · kZAENvai · kZAENvai
D-C08-10Oracle toolingtest-harnessAgent's ad-hoc extraction of the HEAD toolchain source copied only .c files, so building the old-baseline tools failed on missing headers (ld.h).
/tmp/oldsrc/toolchain/ld/main.c:1:10: fatal error: ld.h: No such file or directory
build-error
build; 1 failed attempts
CCFjLBMA · V9m7CDsD · V9m7CDsD
D-C09-03Oracle toolingcaptureSerial driver/recording script waited for the boot banner, but a QEMU `server,nowait` serial socket discards guest output written before a client connects, so the banner never arrived and the script timed out.
fix the script to not depend on catching the boot banner (a `server,nowait` socket discards output written before a client connects)
hang
manual-qemu-run; 3 failed attempts
cg1DYTAp · nnz9D2hQ · h439JRhh
D-C10-05Oracle toolingqemuEvery Bash call that ran `pkill -9 -f qemu-system-i386` together with later steps (QEMU launch, test suite, rm) exited with code 1 and skipped the rest, leaving no QEMU running or stale logs, probably because pkill -f matched the calling shell's own command line; the agent worked around it by running pkill and the launch as separate calls.
pkill -9 -f qemu-system-i386 2>/dev/null
bash tools/run_tests.sh 2>&1 | tail -40
[OUT] ...Exit code 1
other
manual-qemu-run; 10 failed attempts
mkjf2Shc (os run) · — · RoM7DPQp
D-C10-06Oracle toolingcaptureThe GUI screencast recorder assumed QEMU screendump frames were 320x200, but they are 640x400, so ffmpeg read the rawvideo with the wrong stride and produced sheared, double-exposed frames. The first guess (a torn file read) was wrong, and the stricter re-read then rejected every frame and produced an empty mp4.
QEMU's screendump PPM is actually 640x400 (2x supersampled from the native 320x200), not 320x200 as I assumed. That dimension mismatch, not a file race, was silently corrupting every frame
visual
screenshot; 2 failed attempts
q28RMGUW · 584TzG5r, nqCaKEAb, CjF3ns6K · 2bRxXTVp
D-C10-07Oracle toolingcaptureThe recorder's pump() matched stop patterns against the whole cumulative serial log, so after the first '4) Run' every wait returned at once. Keystrokes were then typed while the kernel was busy in gui_pause and got merged ('quhelp', 'ququit', 'quitquit'), and the clip was too short.
my `pump()` checks for the stop pattern against the *entire* cumulative log, so once "4) Run" appears once, every later wait returns instantly
wrong-output
manual-qemu-run; 3 failed attempts
NfhCPLXv · R2VNSysJ, ve9bWUBk, 2GcWG3Fs · 1YTSGo51
D-C09-02EnvironmentqemuAgent's `pkill -f 'qemu-system-i386...'` patterns matched the invoking bash command line itself, killing the shell (exit 144/1) so the rest of the command (QEMU launch, make) never ran, e.g. QEMU never started and later connects/monitor socket failed.
pkill -f 'qemu-system-i386' 2>/dev/null ... [OUT] ...Exit code 144
other
manual-qemu-run; 20 failed attempts
BF7sBAkP · — · —
D-C09-04EnvironmentqemuDuring the 5-minute recording the QEMU serial socket connection went quiet mid-battle although the guest stayed alive, so the play script timed out waiting for an end state; longer timeout did not help, reconnect-on-stall logic was needed.
I hit a QEMU serial-socket quirk (a connection occasionally went quiet mid-session even though the guest stayed alive and responsive) and added reconnect-on-stall logic
hang
manual-qemu-run; 2 failed attempts
h439JRhh · T7GdyaJL, G99GKJAp · UWjepz4W

Merged duplicates