OK, the chaos in llvmToGen is the root cause of this bug, refine that function may solve the problem.
-----Original Message----- From: Yang, Rong R Sent: Thursday, June 22, 2017 09:38 To: Pan, Xiuli <[email protected]>; [email protected] Cc: Pan, Xiuli <[email protected]> Subject: RE: [Beignet] [PATCH] Backend: Fix double free of the cloned_module Because llvmToGen accept the filename argument, so it need to create and delete module. I think the module should not be deleted in llvmToGen, the caller decide to delete or not. I will send another patch to refine it. > -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf > Of Xiuli Pan > Sent: Thursday, June 15, 2017 16:46 > To: [email protected] > Cc: Pan, Xiuli <[email protected]> > Subject: [Beignet] [PATCH] Backend: Fix double free of the > cloned_module > > From: Pan Xiuli <[email protected]> > > In the llvmToGen function the module will be deleted, we only need to > delete the cloned_module when the first llvmToGen success. > > Signed-off-by: Pan Xiuli <[email protected]> > --- > backend/src/backend/program.cpp | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/backend/src/backend/program.cpp > b/backend/src/backend/program.cpp index 724058c..8fb33c4 100644 > --- a/backend/src/backend/program.cpp > +++ b/backend/src/backend/program.cpp > @@ -154,7 +154,12 @@ namespace gbe { > //suppose file exists and llvmToGen will not return false. > llvmToGen(*unit, fileName, module, 0, strictMath, > OCL_PROFILING_LOG, error); > } > + } else { > + if(cloned_module){ > + delete (llvm::Module*) cloned_module; > + } > } > + > if(unit->getValid()){ > std::string error2; > if (this->buildFromUnit(*unit, error2)){ @@ -163,9 +168,6 @@ > namespace gbe { > error = error + error2; > } > delete unit; > - if(cloned_module){ > - delete (llvm::Module*) cloned_module; > - } > return ret; > } > > -- > 2.7.4 > > _______________________________________________ > Beignet mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/beignet
