From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BF84C1A1EE3 for ; Wed, 5 Oct 2016 13:34:32 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 05 Oct 2016 13:34:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,302,1473145200"; d="scan'208";a="16605620" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga005.fm.intel.com with ESMTP; 05 Oct 2016 13:34:32 -0700 Received: from fmsmsx158.amr.corp.intel.com (10.18.116.75) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.248.2; Wed, 5 Oct 2016 13:34:32 -0700 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.167]) by fmsmsx158.amr.corp.intel.com ([169.254.15.158]) with mapi id 14.03.0248.002; Wed, 5 Oct 2016 13:34:32 -0700 From: "Carsey, Jaben" To: "Shah, Tapan" , Laszlo Ersek , Andrew Fish , Daniil Egranov CC: edk2-devel-01 , Leif Lindholm , "Carsey, Jaben" Thread-Topic: [edk2] Assert in ShellPkg with latest tianocore edk2 source on the Reference Platform Thread-Index: AdIekL1EjMpAqwOYRWKk8YKyvfLMLgAjbAlwAACkBtAAFfCNAAAA2Y4AAAEEU4AAAD2LAAAOXvpQ Date: Wed, 5 Oct 2016 20:34:31 +0000 Message-ID: References: <93F01BC9-4B02-467E-B900-65C6775BB0F3@apple.com> <618fd786-24d4-653c-d6b8-cb774654c644@redhat.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGIzN2I0NWItYWI3ZS00ZDg3LTg5OTMtMWI2Y2Y0MzVjMTBhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImM5Y0xodlwvZzd2Z0tyMng5S1FMM09IMlF1bGZlUE43U1RxVEVReVRLT2tRPSJ9 x-ctpclassification: CTP_IC x-originating-ip: [10.1.200.107] MIME-Version: 1.0 Subject: Re: Assert in ShellPkg with latest tianocore edk2 source on the Reference Platform X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Oct 2016 20:34:32 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable That should work. We also need to initialize the variable to NULL in the c= onstructor. Do we need to be case insensitive for this? Can we use memcmp instead of t= he prototol? -Jaben > -----Original Message----- > From: Shah, Tapan [mailto:tapandshah@hpe.com] > Sent: Wednesday, October 05, 2016 1:25 PM > To: Laszlo Ersek ; Andrew Fish ; > Daniil Egranov > Cc: Carsey, Jaben ; edk2-devel-01 devel@ml01.01.org>; Leif Lindholm > Subject: RE: [edk2] Assert in ShellPkg with latest tianocore edk2 source = on > the Reference Platform > Importance: High >=20 > How about moving protocol locate from constructor to the actual function > level and returning an error if it fails to locate (See attached patch fi= le). >=20 > Tapan >=20 > -----Original Message----- > From: Laszlo Ersek [mailto:lersek@redhat.com] > Sent: Wednesday, October 05, 2016 3:18 PM > To: Andrew Fish ; Daniil Egranov > > Cc: Carsey, Jaben ; edk2-devel-01 devel@ml01.01.org>; Leif Lindholm ; Shah, Tapan > > Subject: Re: [edk2] Assert in ShellPkg with latest tianocore edk2 source = on > the Reference Platform >=20 > On 10/05/16 21:48, Andrew Fish wrote: > > > >> On Oct 5, 2016, at 12:24 PM, Daniil Egranov > wrote: > >> > >> I have the same ASSERT issue on Juno platform even the EnglishDxe.inf = is > included to the platform build. If UefiShellLib has such dependency on th= e > protocol then according to EDKII Module Writer's Guide you need to specif= y > the dependency on protocol in the module .inf to ensure the drivers prope= r > load sequence. > >> > >> 8.6 Dependency Expressions > >> A dependency expression specifies the protocols that the DXE driver > >> requires to execute. In EDK II, it is specified in the [Depex] section= of INF > file. > >> > > > > The Dependency Expression is for DXE Drivers that are dispatched by the > DXE Core. A UEFI Driver from an option ROM or an Application does not get > dispatched by the dispatch and the Depex will not help. The Depex ends up > being a section in the FV and it has nothing to do with the PE/COFF image= of > the an application or option ROM. > > > > IMHO the shell should try as hard as possible to function and should no= t > ASSERT if some newer Protocol is missing. >=20 > (Background: commit 583448b441650.) >=20 > In this specific case, the protocol dependency seems possible to eliminat= e: >=20 > - Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c > includes the CharToUpper() function, which is minimal -- could even be > copied or moved over -- and can translate the ASCII subset of UCS-2, >=20 > - once the ASCII characters of the input string have been translated to u= pper > case, the result could be searched for / compared against L"NULL" > using BaseLib.h APIs. >=20 > (Given that L"NULL" only contains characters from the ASCII subset, it > suffices to upper-case ASCII chars in the input string. No non-ASCII char= acter > in the BMP can translate to ASCII N/U/L via upcasing, even with the real > collation protocol (I trust), and no other ASCII characters than n/u/l wi= ll > translate to N/U/L. This means that we won't miss an instance of NULL > because we didn't upcate it (because it was non-ascii), and it also means= we > won't mistakenly match something non-NULL as NULL.) >=20 > Just my two cents. >=20 > Laszlo