This is an automated email from the ASF dual-hosted git repository. zhasheng pushed a commit to branch v1.4.x in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git
The following commit(s) were added to refs/heads/v1.4.x by this push: new b241c41 Backporting the fix to v1.4.x branch to prevent the crash in naive engine. (#15154) b241c41 is described below commit b241c41d66081d330fe08c81b6351cdd76234ec6 Author: Amol Lele <19983848+lelea...@users.noreply.github.com> AuthorDate: Wed Jun 5 10:11:17 2019 -0700 Backporting the fix to v1.4.x branch to prevent the crash in naive engine. (#15154) --- src/engine/naive_engine.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/engine/naive_engine.cc b/src/engine/naive_engine.cc index 05b72d2..5472db4 100644 --- a/src/engine/naive_engine.cc +++ b/src/engine/naive_engine.cc @@ -62,6 +62,8 @@ class NaiveEngine final : public Engine { }; NaiveEngine() { + objpool_opr_ref_ = common::ObjectPool<NaiveOpr>::_GetSharedRef(); + objpool_var_ref_ = common::ObjectPool<NaiveVar>::_GetSharedRef(); } // virtual destructor virtual ~NaiveEngine() { @@ -220,6 +222,13 @@ class NaiveEngine final : public Engine { mshadow::Stream<cpu> cpu_stream_; // GPU streams std::vector<mshadow::Stream<gpu>*> streams_; + /*! + * \brief Holding a shared_ptr to the object pool to prevent it from being destructed too early + * See also #309 (https://github.com/dmlc/mxnet/issues/309) and similar fix in threaded_engine.h. + * Without this, segfaults seen on CentOS7 in test_operator_gpu.py:test_convolution_multiple_streams + */ + std::shared_ptr<common::ObjectPool<NaiveOpr> > objpool_opr_ref_; + std::shared_ptr<common::ObjectPool<NaiveVar> > objpool_var_ref_; }; // class NaiveEngine Engine *CreateNaiveEngine() {