[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