<div dir="ltr"><div>Hi Aleksander and Dan</div><div><br></div>I encountered a crash in mm-device.c:modem_valid:345 where 'self->priv' seemed invalid, but 'modem' looked fine. As there is no code to clear the "notify::base-modem-valid" signal in MMDevice, I think MMDevice currently relies on auto disconnection of the signal when MMBaseModem is destroyed. However, there seems to be a circular reference between MMBaseModem and MMBaseSim (as also indicated in mm_device_remove_modem), so it seems like MMDevice::dispose doesn't break the cycle.<div><br></div><div>Both MMDevice::dispose and MMDevice::set_property call 'g_clear_object (&self->priv->modem) without calling 'g_object_run_dispose (G_OBJECT (self->priv->modem)), which seems problematic.  I was thinking about adding the g_object_run_dispose call, but then wondering if we should instead address the circular reference between MMBaseModem and MMBaseSim with a weak reference?</div><div><br></div><div>Thanks,</div><div>Ben</div></div>