Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.MSM cc1plus.exe:: error: out of memory allocating 65532
From: RaRi (degoah_at_[hidden])
Date: 2013-03-01 18:07:15


Hi,

>Are you talking about the added compile time of 5 modules or does the
>parallel build take 01:50min?

The complete compilation time with two parallel processes takes without
policy 01:10min and with policy it takes 01:50min.

Okay Christophe, I just think, there is no workaround for me to keep the
slave machine and the master machine in one dll: The memory problem is gone
( in case I use the favor_compile_time policy), but now I receive "bad reloc
address in section xyz" messages from the linker regarding the object files
of the master and slave state machines (which are compiled in their own
TU's.)

Here is the failure message:

*ld.exe:
src\TransportLayer\Statemachine\EventDispatcher\SlaveEventDispatcher.o: bad
reloc address 0x45 in section
`.text$_ZN5boost3msm4back14dispatch_tableINS1_13state_machineI18SlaveStateMachine_NS1_18favor_compile_timeENS_9parameter5void_ES7_S7_EENS_3mpl6v_itemINS8_5_row_INS0_5front3RowINS3_I23CStateSlaveHandshaking_S5_S7_S7_S7_E7exit_ptINSE_29ExitPointHandshakingSucceededEEENSC_4noneENS3_I23CStateSlaveOperational_S5_S7_S7_S7_EESJ_SJ_EEEENSA_INSB_INSD_INSL_7exit_ptINSK_28ExitPointMasterHeartbeatLostEEESJ_SF_SJ_SJ_EEEENSA_INS8_6a_row_INSD_INS4_12StateNoErrorE15EventFatalErrorNS4_14StateTerminateEN11ActionError11ReportErrorESJ_EEEENSA_INST_INSD_ISU_17EventNoTransitionSU_NSX_18ReportNoTransitionESJ_EEEENS9_7vector0IN4mpl_2naEEELi1EEELi1EEELi1EEELi1EEE15EventInitFailedS5_E15call_submachineISL_EENS1_11HandledEnumERS8_iiRKS1D_[__ZN5boost3msm4back14dispatch_tableINS1_13state_machineI18SlaveStateMachine_NS1_18favor_compile_timeENS_9parameter5void_ES7_S7_EENS_3mpl6v_itemINS8_5_row_INS0_5front3Ro_?I'*

The *SlaveEventDispatcher.o* contains the instantiation of the Slave state
machine and the process_event call for the boost::variant type (containing
the 20 event types). I use the boost::static_visitor to travers over all
event types and to pass the concrete event afterwards to the process_event
method:

*template<class TStateMachine>
class EventTypeVisitor : public boost::static_visitor<>{

        private:
                // Reference to the concrete state machine
        TStateMachine& m_concreteStateMachine;

        public:
                EventTypeVisitor(TStateMachine& stateMachine) :
m_concreteStateMachine(stateMachine) {};

                // Generic-visitor operator function.
                template<class TEventType >
                void operator()(TEventType & event) {
                        // Forward the event to the concrete state machine.
                        m_concreteStateMachine.process_event(event);
                };
};*

...splitting the master and slave state machines into two different dlls
produces no problems.

Hmm, I was thinking, if you would be interested to take a look at my code. I
can send it to you via personal mail etc.. Maybe there is a bug in the use
of your library or what ever...

BR,

Rafael

--
View this message in context: http://boost.2283326.n4.nabble.com/Boost-MSM-cc1plus-exe-error-out-of-memory-allocating-65532-tp4643468p4643656.html
Sent from the Boost - Users mailing list archive at Nabble.com.

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net