>>108504556
The question doesn't really lend itself to be posted, but I'll try.
It concerned a struct's latter half being clobbered during a seemingly disjoint emplacement. The invalidation tripped an entirely separate assert from a different compilation unit, which had neither to do with the clobbered nor the emplaced struct.
The issue ultimately stemmed from adding a level of indirection to render a struct opaque, but forgetting to add a dereference, leading to too little space being allocated.
The buggy line (from file "A", line ~1400)
node = balloc(*root); // should be **root
The line where memory gets clobbered, which confusingly didn't affect these particular nodes. This node is not the same one from above (from file "A", line ~600)
node->gds = commit(block);
the tripped assert (from file "B", line ~400)
assert(!"Symbol not in tab");
And no, assert is not used instead of error checking, all symbols being present is a precondition in this part of the program.
>>108504738
No, I meant question as in prompt. I pasted my source code, and told it "imagine->sensible_struct->here gets clobbered on line 600, why?" I haven't tried asking the question by just asking why that particular assert failed.
>>108504739
Comment too long. Click here to view the full text.