Hopefully. On Nov 11, 10:44 am, Yi Sun <[email protected]> wrote: > Ravi, > Will you check in these fixes soon? > Thanks > Yi > > > > On Wed, Nov 11, 2009 at 6:52 AM, RaviY <[email protected]> wrote: > > We found a similar problem. Please try to set "iPortActivityHandler to > > NULL" in the destructor of "H223LowerLayer". > > > -Ravi > > > On Nov 11, 8:12 am, John Lee <[email protected]> wrote: > > > Hi list, > > > > I've been trying to compile and run opencore on native PC following > > > the instructions in quick_start.txt . The reason I want to do this is > > > that it's supposed to be easier to work on host pc since what I want > > > to do is not hardware dependent, but so far it doesn't seem to be the > > > case. After 8 bug fix commits I managed to finish the compilation, but > > > other problem follows. Here is the problem description: > > > > Since H223LowerLayer is both PvmfPortBaseImpl and > > > PVMFPortActivityHandler, it sends itself to the constructor of > > > PvmfPortBaseImpl to act as its iPortActivityHandler. During the > > > destruction of PvmfPortBaseImpl, > > > iPortActivityHandler->HandlePortActivity will be called. The problem > > > is, the real implementation of HandlePortActivity lies inside > > > H223LowerLayer, and the order of destruction is: > > > > ~H223LowerLayer > > > ~PvmfPortBaseImpl > > > iPortActivityHandler->HandlePortActivity > > > > So when HandlePortActivity is actually invoked, > > > H223LowerLayer::HandlePortActivity() is already invalid, and the code > > > path falls to PVMFPortActivityHandler::HandlePortActivity, which is a > > > pure virtual function. This will cause a SIGABRT: > > > > pure virtual method called > > > terminate called without an active exception > > > > Program received signal SIGABRT, Aborted. > > > > (Backtrace enclosed.) > > > > p.s. Here is the snipped source code related to this issue: > > > external/opencore/protocols/systems/3g-324m_pvterminal/h223/include/lowerlayer.h: > > > class H223LowerLayer : public PvmfPortBaseImpl, > > > public PVMFPortActivityHandler > > > > }; > > > > external/opencore/pvmi/pvmf/include/pvmf_port_base_impl.h: > > > class PvmfPortBaseImpl : public PVMFPortInterface > > > { > > > OSCL_IMPORT_REF PvmfPortBaseImpl(int32 aPortTag, > > PVMFPortActivityHandler* aNode, const char*name = NULL); > > > > }; > > > > external/opencore/pvmi/pvmf/include/pvmf_port_interface.h: > > > class PVMFPortInterface > > > { > > > PVMFPortActivityHandler *iPortActivityHandler; > > > > }; > > > > external/opencore/pvmi/pvmf/include/pvmf_node_interface.h: > > > class PVMFPortActivityHandler > > > { > > > public: > > > virtual ~PVMFPortActivityHandler() {} > > > virtual void HandlePortActivity(const PVMFPortActivity &) = 0; > > > > }; > > > > implementation: > > > external/opencore/protocols/systems/3g-324m_pvterminal/h223/src/lowerlayer.cpp: > > > H223LowerLayer::H223LowerLayer(int32 aPortTag, TPVLoopbackMode > > aLoopbackMode) > > > : PvmfPortBaseImpl(aPortTag, this), > > > { > > > > } > > > > external/opencore/pvmi/pvmf/src/pvmf_port_base_impl.cpp: > > > OSCL_EXPORT_REF PvmfPortBaseImpl::PvmfPortBaseImpl(int32 aTag, > > PVMFPortActivityHandler* aNode, const char*name) > > > : PVMFPortInterface(aNode), > > > { > > > > } > > > > OSCL_EXPORT_REF PvmfPortBaseImpl::~PvmfPortBaseImpl() > > > { > > > PortActivity(PVMF_PORT_ACTIVITY_DELETED); > > > > } > > > > OSCL_EXPORT_REF void PvmfPortBaseImpl::PortActivity(PVMFPortActivityType > > aActivity) > > > { > > > if (iPortActivityHandler) > > > { > > > PVMFPortActivity activity(this, aActivity); > > > iPortActivityHandler->HandlePortActivity(activity); > > > } > > > > } > > > > bt.txt > > > 4KViewDownload > > > -- > > unsubscribe: > > [email protected]<android-porting%[email protected]> > > website:http://groups.google.com/group/android-porting > > -- > Android-x86http://www.android-x86.org
-- unsubscribe: [email protected] website: http://groups.google.com/group/android-porting
