When a signal callback raises an exception (for instance, bind a 0-argument function to NameOwnerChanged so it raises TypeError), not only is the exception ignored (probably unavoidable), but no feedback is given. The exception should be printed to stderr like it was in dbus-python < 0.80.
Partially fixed in git by adding a try/except around user code. The proper fix would be to check for exceptions each time we manipulate the interpreter/stack/GIL state in C, too.
Mass reopen. The "LATER" resolution is lame, I'm deleting it. Consider LATER to have arrived.
(In reply to comment #1) > Partially fixed in git by adding a try/except around user code. Is it this code? dbus-python/dbus/connection.py: def maybe_handle_message(self, message): ... except: # basicConfig is a no-op if logging is already configured logging.basicConfig() _logger.error('Exception in handler for D-Bus signal:', exc_info=1)
Yes. There might be other places where a GLib mainloop callback calls into Python; they would need similar logging, or preferably, the equivalent in C code as described in Comment #1.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/dbus/dbus-python/issues/17.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.