Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

2018-05-08 Thread Gary Lin
On Tue, May 08, 2018 at 11:50:46AM +, Bi, Dandan wrote:
> Yes. We have submitted patch to fix it. Sorry for the inconvenience.
> 
Awesome! Thanks for the quick response :)

Gary Lin

> Thanks,
> Dandan
> 
> -Original Message-
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Gary 
> Lin
> Sent: Tuesday, May 8, 2018 5:46 PM
> To: Bi, Dandan <dandan...@intel.com>
> Cc: edk2-devel@lists.01.org; Dong, Eric <eric.d...@intel.com>; Gao, Liming 
> <liming@intel.com>
> Subject: Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues
> 
> On Tue, Apr 10, 2018 at 03:54:46PM +0800, Dandan Bi wrote:
> > Cc: Eric Dong <eric.d...@intel.com>
> > Cc: Liming Gao <liming@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Dandan Bi <dandan...@intel.com>
> > ---
> >  BaseTools/Source/C/VfrCompile/VfrSyntax.g | 32 
> > ++-
> >  1 file changed, 31 insertions(+), 1 deletion(-)
> > 
> > diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g 
> > b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> > index d48072a8adf..4b0a43606ea 100644
> > --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> > +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> Hi Dandan,
> 
> I encountered a build error with our build service:
> 
> [  197s] "VfrCompile" -l -n --string-db 
> /home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManagerUiLibStrDefs.hpk
>  --output-directory 
> /home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/DEBUG/.
>  
> /home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManager.i
> [  197s] *** Error in 
> `/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/BaseTools/Source/C/bin/VfrCompile':
>  free(): invalid pointer: 0xbabababababababa ***
> 
> If I reverted the following change, the package can be built again.
> 
> > @@ -5055,11 +5082,14 @@ EfiVfrParser::_SAVE_OPHDR_COND (  VOID  
> > EfiVfrParser::_CLEAR_SAVED_OPHDR (
> >VOID
> >)
> >  {
> > -  mCIfrOpHdr[mCIfrOpHdrIndex]   = NULL;
> > +  if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {
> > +delete mCIfrOpHdr[mCIfrOpHdrIndex];
> > +mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;
> > +  }
> >mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;  }
> >  
> >  BOOLEAN
> >  EfiVfrParser::_SET_SAVED_OPHDR_SCOPE (
> 
> I have no clue now and it happened all the time.
> 
> Would you mind to check the code?
> 
> Thanks,
> 
> Gary Lin
> ___
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> ___
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

2018-05-08 Thread Bi, Dandan
Yes. We have submitted patch to fix it. Sorry for the inconvenience.

Thanks,
Dandan

-Original Message-
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Gary Lin
Sent: Tuesday, May 8, 2018 5:46 PM
To: Bi, Dandan <dandan...@intel.com>
Cc: edk2-devel@lists.01.org; Dong, Eric <eric.d...@intel.com>; Gao, Liming 
<liming@intel.com>
Subject: Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

On Tue, Apr 10, 2018 at 03:54:46PM +0800, Dandan Bi wrote:
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Liming Gao <liming@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Dandan Bi <dandan...@intel.com>
> ---
>  BaseTools/Source/C/VfrCompile/VfrSyntax.g | 32 
> ++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g 
> b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> index d48072a8adf..4b0a43606ea 100644
> --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
Hi Dandan,

I encountered a build error with our build service:

[  197s] "VfrCompile" -l -n --string-db 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManagerUiLibStrDefs.hpk
 --output-directory 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/DEBUG/.
 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManager.i
[  197s] *** Error in 
`/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/BaseTools/Source/C/bin/VfrCompile':
 free(): invalid pointer: 0xbabababababababa ***

If I reverted the following change, the package can be built again.

> @@ -5055,11 +5082,14 @@ EfiVfrParser::_SAVE_OPHDR_COND (  VOID  
> EfiVfrParser::_CLEAR_SAVED_OPHDR (
>VOID
>)
>  {
> -  mCIfrOpHdr[mCIfrOpHdrIndex]   = NULL;
> +  if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {
> +delete mCIfrOpHdr[mCIfrOpHdrIndex];
> +mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;
> +  }
>mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;  }
>  
>  BOOLEAN
>  EfiVfrParser::_SET_SAVED_OPHDR_SCOPE (

I have no clue now and it happened all the time.

Would you mind to check the code?

Thanks,

Gary Lin
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

2018-05-08 Thread Gary Lin
On Tue, Apr 10, 2018 at 03:54:46PM +0800, Dandan Bi wrote:
> Cc: Eric Dong 
> Cc: Liming Gao 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Dandan Bi 
> ---
>  BaseTools/Source/C/VfrCompile/VfrSyntax.g | 32 
> ++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g 
> b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> index d48072a8adf..4b0a43606ea 100644
> --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
> +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
Hi Dandan,

I encountered a build error with our build service:

[  197s] "VfrCompile" -l -n --string-db 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManagerUiLibStrDefs.hpk
 --output-directory 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/DEBUG/.
 
/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/Build/OvmfX64/DEBUG_GCC5/X64/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib/OUTPUT/BootMaintenanceManager.i
[  197s] *** Error in 
`/home/abuild/rpmbuild/BUILD/ovmf-2018+git1525681922.053cd183c9f2/BaseTools/Source/C/bin/VfrCompile':
 free(): invalid pointer: 0xbabababababababa ***

If I reverted the following change, the package can be built again.

> @@ -5055,11 +5082,14 @@ EfiVfrParser::_SAVE_OPHDR_COND (
>  VOID
>  EfiVfrParser::_CLEAR_SAVED_OPHDR (
>VOID
>)
>  {
> -  mCIfrOpHdr[mCIfrOpHdrIndex]   = NULL;
> +  if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {
> +delete mCIfrOpHdr[mCIfrOpHdrIndex];
> +mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;
> +  }
>mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;
>  }
>  
>  BOOLEAN
>  EfiVfrParser::_SET_SAVED_OPHDR_SCOPE (

I have no clue now and it happened all the time.

Would you mind to check the code?

Thanks,

Gary Lin
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

2018-04-17 Thread Dong, Eric
Reviewed-by: Eric Dong 

-Original Message-
From: Bi, Dandan 
Sent: Tuesday, April 10, 2018 3:55 PM
To: edk2-devel@lists.01.org
Cc: Dong, Eric ; Gao, Liming 
Subject: [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

Cc: Eric Dong 
Cc: Liming Gao 
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi 
---
 BaseTools/Source/C/VfrCompile/VfrSyntax.g | 32 ++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g 
b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
index d48072a8adf..4b0a43606ea 100644
--- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
+++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
@@ -4103,10 +4103,11 @@ vfrStatementExpression [UINT32 RootLevel, UINT32 
ExpOpCount = 0] :
   }
 }
   }
   
   if ($RootLevel == 0) 
{
+
+ _CLEAR_SAVED_OPHDR ();
 mCIfrOpHdrIndex --;
   }
>>
   ;
 
@@ -4387,10 +4388,16 @@ vareqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   V5:Number<< ConstVal = 
_STOU16(V5->getText(), V5->getLine()); >>
<< IdEqValDoSpecial 
($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr != NULL) {
+   delete[] VarIdStr;
+   VarIdStr = NULL;
+ }
+  >>
   ;
 
 ideqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  EFI_QUESTION_ID QId;
@@ -4440,10 +4447,16 @@ ideqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   V5:Number<< ConstVal = 
_STOU16(V5->getText(), V5->getLine()); >>
<< IdEqValDoSpecial 
($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr != NULL) {
+   delete[] VarIdStr;
+   VarIdStr = NULL;
+ }
+  >>
   ;
 
 ideqidExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  EFI_QUESTION_ID QId[2];
@@ -4492,10 +4505,20 @@ ideqidExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
<< IdEqIdDoSpecial 
($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], 
Mask[1], GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr[0] != NULL) {
+   delete[] VarIdStr[0];
+   VarIdStr[0] = NULL;
+ }
+ if (VarIdStr[1] != NULL) {
+   delete[] VarIdStr[1];
+   VarIdStr[1] = NULL;
+ }
+  >>
   ;
 
 ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  UINT16  ListLen = 0;
@@ -4531,10 +4554,14 @@ ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] 
:
 if (QId == 
EFI_QUESTION_ID_INVALID) {
   
EILObj.SetQuestionId (QId, VarIdStr, LineNo);
 }
 $ExpOpCount++;
   }
+  if (VarIdStr != 
NULL) {
+delete[] VarIdStr;
+VarIdStr = NULL;
+  }
 >>
   ;
 
 questionref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
@@ -5055,11 +5082,14 @@ EfiVfrParser::_SAVE_OPHDR_COND (  VOID  
EfiVfrParser::_CLEAR_SAVED_OPHDR (
   VOID
   )
 {
-  mCIfrOpHdr[mCIfrOpHdrIndex]   = NULL;
+  if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {
+delete mCIfrOpHdr[mCIfrOpHdrIndex];
+mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;
+  }
   mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;  }
 
 BOOLEAN
 EfiVfrParser::_SET_SAVED_OPHDR_SCOPE (
--
2.14.3.windows.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


[edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues

2018-04-10 Thread Dandan Bi
Cc: Eric Dong 
Cc: Liming Gao 
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi 
---
 BaseTools/Source/C/VfrCompile/VfrSyntax.g | 32 ++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g 
b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
index d48072a8adf..4b0a43606ea 100644
--- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
+++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
@@ -4103,10 +4103,11 @@ vfrStatementExpression [UINT32 RootLevel, UINT32 
ExpOpCount = 0] :
   }
 }
   }
   
   if ($RootLevel == 0) 
{
+_CLEAR_SAVED_OPHDR 
();
 mCIfrOpHdrIndex --;
   }
>>
   ;
 
@@ -4387,10 +4388,16 @@ vareqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   V5:Number<< ConstVal = 
_STOU16(V5->getText(), V5->getLine()); >>
<< IdEqValDoSpecial 
($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr != NULL) {
+   delete[] VarIdStr;
+   VarIdStr = NULL;
+ }
+  >>
   ;
 
 ideqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  EFI_QUESTION_ID QId;
@@ -4440,10 +4447,16 @@ ideqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   V5:Number<< ConstVal = 
_STOU16(V5->getText(), V5->getLine()); >>
<< IdEqValDoSpecial 
($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr != NULL) {
+   delete[] VarIdStr;
+   VarIdStr = NULL;
+ }
+  >>
   ;
 
 ideqidExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  EFI_QUESTION_ID QId[2];
@@ -4492,10 +4505,20 @@ ideqidExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   ">"
   vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
<< IdEqIdDoSpecial 
($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], 
Mask[1], GREATER_THAN); >>
 )
   )
+  <<
+ if (VarIdStr[0] != NULL) {
+   delete[] VarIdStr[0];
+   VarIdStr[0] = NULL;
+ }
+ if (VarIdStr[1] != NULL) {
+   delete[] VarIdStr[1];
+   VarIdStr[1] = NULL;
+ }
+  >>
   ;
 
 ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
  UINT16  ListLen = 0;
@@ -4531,10 +4554,14 @@ ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] 
:
 if (QId == 
EFI_QUESTION_ID_INVALID) {
   
EILObj.SetQuestionId (QId, VarIdStr, LineNo);
 }
 $ExpOpCount++;
   }
+  if (VarIdStr != 
NULL) {
+delete[] VarIdStr;
+VarIdStr = NULL;
+  }
 >>
   ;
 
 questionref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   <<
@@ -5055,11 +5082,14 @@ EfiVfrParser::_SAVE_OPHDR_COND (
 VOID
 EfiVfrParser::_CLEAR_SAVED_OPHDR (
   VOID
   )
 {
-  mCIfrOpHdr[mCIfrOpHdrIndex]   = NULL;
+  if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {
+delete mCIfrOpHdr[mCIfrOpHdrIndex];
+mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;
+  }
   mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;
 }
 
 BOOLEAN
 EfiVfrParser::_SET_SAVED_OPHDR_SCOPE (
-- 
2.14.3.windows.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel