Open
Description
I have issues with a Nikon reflector turret TIFilterBLOCK1
timing out leading to kernel crashes. Setup is the following:
for i in range(20): #multiple loops as timeout happens randomly
for channel in channels: #loop over different configs
mmc.setConfig('Channel',channel)
mmc.waitForSystem / mmc.waitForConfig # where I get the error with ~10% chance
- With
waitForSystem()
I get a runtime error as expected:
RuntimeError: Wait for device "TIFilterBlock1" timed out after 5000ms
- But with
waitForConfig('Channel',channel)
I get a kernel crash:
The Kernel crashed while executing code in the the current cell or a previous cell
or no error at all and the loop keeps running, but I can find the timeout in the log file:
[ERR,Core] Error occurred in device waitForConfig: Wait for device "TIFilterBlock1" timed out after 5000ms
Seems like in waitForSystem()
timeout errors are propagated from waitForDevice()
->waitForDeviceType()
->waitForSystem()
While in waitForConfig()
the errors are caught:
void CMMCore::waitForConfig(const char* group, const char* configName) throw (CMMError)
{
CheckConfigGroupName(group);
CheckConfigPresetName(configName);
Configuration cfg = getConfigData(group, configName);
try {
for(size_t i=0; i<cfg.size(); i++)
waitForDevice(cfg.getSetting(i).getDeviceLabel().c_str());
} catch (CMMError& err) {
// trap MM exceptions and keep quiet - this is not a good time to blow up
logError("waitForConfig", err.getMsg().c_str());
}
}
So not interrupting and just logging the error with waitForConfig()
seems to work as designed in MMCore (although this behaviour was unexpected to me). But could this be linked to the subsequent pymmcore crashes?
Metadata
Metadata
Assignees
Labels
No labels