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

Reply via email to