Re: PANIC: FAIL in line 187
Uwe Dannowski <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Organization | System Architecture Group, Karlsruhe University (TH), Germany |
| Message-ID | <[email protected]> |
Max Dilay wrote:
> But when Pistachio loading they write PANIC: Fail in line 187.
Short answer: Try GCC < 4.1 if you can. Version 4.0.x should work.
I don't have a quick fix for this.
Long answer:
There seems to be a problem with how GCC 4.1 handles the initialization
of the KIP. I encountered it on IA-32 but didn't have time to take care
of it, yet. Prior versions of GCC managed to statically initialize the
memoryinfo field in the KIP which serves as a pointer to the memory
descriptors. GCC 4.1, however, generates code to initialize it. Thus the
field contains zeros in the freshly loaded kernel binary that is
inspected and patched by kickstart. The constructor to initialize the
meminfo field would only be called once the kernel has been launched if
it ever got that far. Around 3 or 4 corners, this then manifests in
kickstart in said "FAIL in line 187".
I'm not sure if that transfers to AMD64, though. I guess it does. You
can check by inspecting the values at offset 0xA8 ... 0xAF in the KIP
in your amd64-kernel binary:
objdump -s -j .kip amd64-kernel | grep 0a0
should yield something like:
ffffffffc023e0a0 00000000 00000000 d0000000 00030000
where the last two words shouldn't be all zeros.
Uwe