Public bug reported: Steps to reproduce: 1. Create a Python class which implement an interface which contains a method with null-ok string parameter (gtk.Buildable.add_child) 2. Call this method from C with a null parameter (or use gtk.Builder in our case) 3. application crashes with a segfault in the corresponding proxy method.
Test case: 1. Use upstream head Rhythmbox, or lucid Rhythmbox with patch from https://bugzilla.gnome.org/show_bug.cgi?id=619677, so that impl_add_uri and impl_want_uri RB functions are exposed to RB Python plugins 2. Add a trivial Python plugin that implements do_impl_{want,add}_uri 3. Run "rhythmbox testurl:///whatever" from the command line 4. Rhythmbox segfaults. Code for example trivial Python plugin: import rb, gobject class ExampleURI(rb.Plugin): def activate(self, shell): self.source = gobject.new(MySource, shell=shell,plugin=self) def deactivate(self, shell): self.source.delete_thyself() class MySource(rb.Source): __gproperties__ = { 'plugin': (rb.Plugin, 'plugin', 'plugin', gobject.PARAM_WRITABLE|gobject.PARAM_CONSTRUCT_ONLY), } def do_impl_want_uri(self, uri): if uri.startswith("testuri://"): return 100 rb.Source.do_impl_want_uri(self, uri) return 0 def do_impl_add_uri(self, uri, title, genre): if not uri.startswith("testuri://"): return False print "Hi! The testcase plugin got a uri: %s" % uri return True ** Affects: pygobject (Ubuntu) Importance: Undecided Status: New -- null-ok parameter annotation not correctly handled for virtual methods https://bugs.launchpad.net/bugs/588694 You received this bug notification because you are a member of Ubuntu Desktop Bugs, which is subscribed to pygobject in ubuntu. -- desktop-bugs mailing list desktop-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/desktop-bugs