network and cpu models share the same lmm as the host model. the host
model frees the lmm, but both sub models have to set their local
reference to nullptr before the parent destructors are called to
prevent double free/delete.
{
lmm_system_free(maxminSystem_);
maxminSystem_ = nullptr;
{
lmm_system_free(maxminSystem_);
maxminSystem_ = nullptr;
+ delete surf_network_model;
+ delete surf_cpu_model_pm;
}
CpuL07Model::CpuL07Model(HostL07Model *hmodel,lmm_system_t sys)
: CpuModel()
, hostModel_(hmodel)
}
CpuL07Model::CpuL07Model(HostL07Model *hmodel,lmm_system_t sys)
: CpuModel()
, hostModel_(hmodel)
- {
- maxminSystem_ = sys;
- }
+{
+ maxminSystem_ = sys;
+}
+
+CpuL07Model::~CpuL07Model()
+{
+ maxminSystem_ = nullptr;
+}
NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys)
: NetworkModel()
, hostModel_(hmodel)
NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys)
: NetworkModel()
, hostModel_(hmodel)
- {
- maxminSystem_ = sys;
- loopback_ = createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE);
- }
+{
+ maxminSystem_ = sys;
+ loopback_ = createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE);
+}
+
+NetworkL07Model::~NetworkL07Model()
+{
+ maxminSystem_ = nullptr;
+}
double HostL07Model::nextOccuringEvent(double now)
{
double HostL07Model::nextOccuringEvent(double now)
{
class CpuL07Model : public CpuModel {
public:
CpuL07Model(HostL07Model *hmodel,lmm_system_t sys);
class CpuL07Model : public CpuModel {
public:
CpuL07Model(HostL07Model *hmodel,lmm_system_t sys);
- ~CpuL07Model() = default;
Cpu *createCpu(simgrid::s4u::Host *host, std::vector<double> *speedPerPstate, int core) override;
HostL07Model *hostModel_;
Cpu *createCpu(simgrid::s4u::Host *host, std::vector<double> *speedPerPstate, int core) override;
HostL07Model *hostModel_;
class NetworkL07Model : public NetworkModel {
public:
NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys);
class NetworkL07Model : public NetworkModel {
public:
NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys);
- ~NetworkL07Model() = default;
LinkImpl* createLink(const char* name, double bandwidth, double latency,
e_surf_link_sharing_policy_t policy) override;
LinkImpl* createLink(const char* name, double bandwidth, double latency,
e_surf_link_sharing_policy_t policy) override;