[ipxe-devel] iPXE MemoryAllocationLib.c assert failures on Dell PowerEdge
Michael Brown
mcb30 at ipxe.org
Fri Jan 26 00:11:20 UTC 2018
On 25/01/18 19:06, Lynn.Heinemann at dell.com wrote:
> We compiled with the debug flags you provided and induced a failure. This doesn't occur on every boot but currently on approximately 1 out of every 10 attempts.
>
> <snip>
>
> EFIDRV PciRoot(0x1)/Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(246E96925728,0x1) has driver "SNP"
> EFIDRV PciRoot(0x1)/Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(246E96925728,0x1) disconnecting existing drivers
> ASSERT u:\MdePkg\Library\UefiMemoryAllocationLib\MemoryAllocationLib.c(819): !EFI_ERROR (Status)
The error is happening during the call to the UEFI boot services
DisconnectController() function. The error is entirely outside the
scope of iPXE; it is a memory allocation (or corruption) bug somewhere
in the platform firmware.
To debug this any further, you'll need to be able to rebuild the
platform firmware and add some additional debug code to
MdePkg\Library\UefiMemoryAllocationLib\MemoryAllocationLib.c.
If this isn't possible, then you could plausibly patch the UEFI system
table from within iPXE to put a debug wrapper around the UEFI boot
services FreePool() call, since this is the call that is failing and
triggering the assertion. The code in interface/efi/efi_wrap.c (which
basically implements strace for UEFI) does similar things and may serve
as useful inspiration.
Good luck!
Michael
More information about the ipxe-devel
mailing list