Hi Andrew,

The List Head pointer that is passed to the “InsertTailList” API call and to 
the “InternalBaseLibIsNodeInList”, differ.
That could be cause of the Assertion, Not sure how this is getting overlayed. 
It is inside the same call and is sequential , no other calls?

Thanks
Sai

From: Saiprasad Chavali [mailto:s...@marvell.com]
Sent: Friday, June 19, 2015 5:18 PM
To: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] Assertion in Linked list - help

Thanks Andrew, I haven’t changed the default PCD value. Let me check the cases 
you have mentioned. Even if it is repeated calls, I don’t think I can reach the 
count of the PCD maximum value.

I verified the “List Empty” case, where I dumped the elements and are no more 
than 2/3 in number, before I hit this assertion.

Sai


From: Andrew Fish [mailto:af...@apple.com]
Sent: Friday, June 19, 2015 5:01 PM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: Re: [edk2] Assertion in Linked list - help


On Jun 19, 2015, at 4:41 PM, Saiprasad Chavali 
<s...@marvell.com<mailto:s...@marvell.com>> wrote:

Hi,
I am using the standard API to initialize the lists : 
“InitializeListHead(XXX)”. I don’t see it get stuck. If I remove the Assertion 
check, it goes through, no issues. The node values and the count are fine.


~/work/src/edk2(master)>git grep PcdMaximumLinkedListLength -- *.dec
MdePkg/MdePkg.dec:1844:  
gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|1000000|UINT32|0x00000003

The default for PcdMaximumLinkedListLength is a large value. Did you set it to 
another value in your DSC file?

What cause a memory corruption if we think that is the only case? A repeated 
call to insertion/remove? Is not happening sequentially?


Well it is C code so memory corruption is easy. Have a bad pointer, or pass the 
same data into multiple calls. If you are casting to (LIST_ENTRY *) that may be 
a bug too.

LIST_ENTRY ListData;
LIST_ENTRY *ListHead = &ListData;
LIST_ENTRY *ListEntry = &ListData;

InitializeListHead (ListHead);

for (i=0; i<2; i++) {
  InsertHeadList (ListHead, ListEntry);
}

Thanks,

Andrew Fish

Thanks
Sai



From: Andrew Fish [mailto:af...@apple.com]
Sent: Friday, June 19, 2015 4:29 PM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: Re: [edk2] Assertion in Linked list - help


On Jun 19, 2015, at 4:18 PM, Saiprasad Chavali 
<s...@marvell.com<mailto:s...@marvell.com>> wrote:

Hi,

I hit the Assertion (ASSERT (Count < PcdGet32 (PcdMaximumLinkedListLength))),
“Linked list is too long” inside the “InternalBaseLibIsNodeInList” of baselib 
“linkedlist.c”.

Almost all the Linked list API,  calls this function. There is not one 
particular API that throws this error when Invoked inside the Dxe Driver.

If I comment this Assertion call everything works fine. The node elements in 
the lists at any point of the time or no more than 3 or 4. So wondering what 
could be the cause of this assertion.

It happens most of the time, some kind of timing issue. Suspecting memory 
corruption of the links, if so any reason (or) is anything wrong in the way I 
initialize the linked lists?


How do you initialize the lists? The lists are circular so I guess you could 
get stuck in an infinite loop, if you initialize them incorrectly or have 
memory corruption.

Thanks,

Andrew Fish


Your help is so much appreciated.

Thanks
Sai


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to