Re: [edk2] [patch 1/2] BaseTools/VfrCompile:Fix memory leak issues
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
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
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
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
Cc: Eric DongCc: 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