Open vallsv opened 3 years ago
I am afraid I cannot tell much from these logs without a way of reproducing, or at least some more context
I was in fact triggered when i close taurus form
I put a breakpoint on the file tauruslineedit
--- a/lib/taurus/qt/qtgui/input/tauruslineedit.py
+++ b/lib/taurus/qt/qtgui/input/tauruslineedit.py
@@ -145,6 +145,8 @@ class TaurusValueLineEdit(Qt.QLineEdit, TaurusBaseWritableWidget):
self._updateValidator(value)
self.setValue(value.wvalue)
except Exception as e:
+ if self.getModelObj() is None:
+ breakpoint()
self.info('Failed attempt to initialize value: %r', e)
Here is few information
> /users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/input/tauruslineedit.py(150)handleEvent()
-> self.info('Failed attempt to initialize value: %r', e)
(Pdb) evt_src, evt_type, evt_value
(TangoAttribute(tango://tiktak.esrf.fr:20000/id16na/metadata/ingest/lastDatafile), 0, None)
(Pdb) self.getModelObj()
(Pdb) (self.getModelObj(),)
(None,)
And the backtrace
(Pdb) bt
/users/valls/Software/miniconda3/envs/taurusenv/bin/taurus(33)<module>()
-> sys.exit(load_entry_point('taurus', 'console_scripts', 'taurus')())
/users/valls/workspace/id16/taurus.git/lib/taurus/cli/cli.py(132)main()
-> taurus_cmd()
/users/valls/Software/miniconda3/envs/taurusenv/lib/python3.8/site-packages/click/core.py(829)__call__()
-> return self.main(*args, **kwargs)
/users/valls/Software/miniconda3/envs/taurusenv/lib/python3.8/site-packages/click/core.py(782)main()
-> rv = self.invoke(ctx)
/users/valls/Software/miniconda3/envs/taurusenv/lib/python3.8/site-packages/click/core.py(1259)invoke()
-> return _process_result(sub_ctx.command.invoke(sub_ctx))
/users/valls/Software/miniconda3/envs/taurusenv/lib/python3.8/site-packages/click/core.py(1066)invoke()
-> return ctx.invoke(self.callback, **ctx.params)
/users/valls/Software/miniconda3/envs/taurusenv/lib/python3.8/site-packages/click/core.py(610)invoke()
-> return callback(*args, **kwargs)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusform.py(1235)form_cmd()
-> sys.exit(app.exec_())
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/application/taurusapplication.py(358)exec_()
-> ret = Qt.QApplication.exec_(*args, **kwargs)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/button/taurusbutton.py(80)closeEvent()
-> self.setWidget(None)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/button/taurusbutton.py(61)setWidget()
-> self._widget.setModel(None)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(314)setModel()
-> self.detach()
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(420)detach()
-> detach_recursive(self)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(410)detach_recursive()
-> detach_recursive(t)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(410)detach_recursive()
-> detach_recursive(t)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(410)detach_recursive()
-> detach_recursive(t)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(410)detach_recursive()
-> detach_recursive(t)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusdevicepanel.py(415)detach_recursive()
-> obj.setModel([] if isinstance(obj, TaurusForm) else '')
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusvalue.py(1256)setModel()
-> TaurusBaseWidget.setModel(self, model)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1184)setModel()
-> self.setModelCheck(model)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1542)setModelCheck()
-> TaurusBaseComponent.setModelCheck(self, model, check)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1217)setModelCheck()
-> self.setModelName(model, parent_widget)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(594)setModelName()
-> self._detach()
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1043)_detach()
-> self.fireEvent(m, TaurusEventType.Change, None)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(388)fireEvent()
-> self.taurusEvent.emit(evt_src, evt_type, evt_value)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(425)filterEvent()
-> self.handleEvent(*evt)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusvalue.py(1276)handleEvent()
-> self.updateWriteWidget()
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusvalue.py(932)updateWriteWidget()
-> self._writeWidget.setModel(self.getFullModelName())
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/panel/taurusvalue.py(212)setModel()
-> return TaurusValueLineEdit.setModel(self, None)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1184)setModel()
-> self.setModelCheck(model)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1542)setModelCheck()
-> TaurusBaseComponent.setModelCheck(self, model, check)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1217)setModelCheck()
-> self.setModelName(model, parent_widget)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(594)setModelName()
-> self._detach()
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(1043)_detach()
-> self.fireEvent(m, TaurusEventType.Change, None)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(388)fireEvent()
-> self.taurusEvent.emit(evt_src, evt_type, evt_value)
/users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/base/taurusbase.py(425)filterEvent()
-> self.handleEvent(*evt)
> /users/valls/workspace/id16/taurus.git/lib/taurus/qt/qtgui/input/tauruslineedit.py(150)handleEvent()
-> self.info('Failed attempt to initialize value: %r', e)
This always happen when i close the taurus form
of this specific device. self.getModelObj()
can be None.
Ok, it looks like the issue is caused during the closing of the application after the model has already been removed.
I guess we could simply handle the getModelObj()
-->None
case here and , but before that it would be nice to understand why we see it in this case.
@vallsv , do you think it would be possible to reproduce the issue with some simple device and using strictly taurus widgets?
Here i was only using taurus form
app. But i guess the Tango attributes also have to raise an exception when we try to read it (the API_AttrNotAllowed
we can see on the logs).
Here is few logs i have received when i was testing #1151.
The last log is i guess the most important. Cause it sounds like an issue in Taurus.
Hope it is useful.