GNOME Bugzilla – Bug 319088
Table interface getSelectedRows, getSelectedColumns causes crash or CORBA_UNKNOWN
Last modified: 2006-03-20 17:48:02 UTC
Distribution/Version: Fedora Core 4 I'm experiencing some problems accessing gtk tables via the AT-SPI table interface. In particular, the getSelectedRows and getSelectedColumns calls are returning CORBA.UNKNOWN or causing hangs or crashes on accessible objects exposing the table interface. For example, using these methods on the table of characters in the Gnome character map application has the following results: getSelectedRows returns CORBA.UNKNOWN getSelectedColumns hangs indefinitely Using these methods on the list of languages in the same application (which is exposed under role 'table') gives the following results: getSelectedRows works properly getSelectedColumns crashes the character map application In another example, using these methods on the list of demos in the gtk-demo (which is exposed under role 'tree table') has the following results: getSelectedRows works properly getSelectedColumns crashes gtk-demo with a seg fault I understand that tables that are actually lists probably shouldn't support the getSelectedColumns call, but they probably shouldn't be crashing applications. The failure of getSelectedRows on the character map table seems wrong. The attached test case reproduces the problems I experience when accessing the character map table (example #1 above).
Created attachment 53588 [details] Test case Run the Gnome character map application. Run the Python script (python table_test.py). Notice the CORBA.UNKNOWN response to getSelectedRows. Comment out the line in the script which calls getSelectedRows. Run the script again. Notice the call to getSelectedColumns hangs indefinitely or crashes the character map app.
This is strange, because zero-length sequences (which are created by the calls to getSelectedColumns on objects that don't implement column selection) are technically legal in CORBA and should be marshalled/demarshalled successfully. In the cases you describe based on GtkTreeTable, using gailtreeview.c, getSelectedColumns should just be returning an empty CORBA sequence. There isn't much code in at-spi that gets executed here at all, so I am suspicious that the problem may be in the pyORBit bindings or even in ORBit2. Could you please create and attach a couple of stack traces? Since gucharmap doesn't use gailtreetable, but implements its own ATK support I believe, the problem with gucharmap may be in gucharmap itself. Standard "please provide stack trace" request follows: Thanks for the bug report. Without a stack trace from the crash it's very hard to determine what caused it. Can you provide us with one? Please see http://live.gnome.org/GettingTraces for more information on how to do so.
BTW, note that you _do_ have Accessibility_Table_getNSelectedRows and getNSelectedColumns to work around this, as it only seems to happen with zero-length sequences...
New info: getSelectedColumns crash reproduced without Python; I've found the root cause of this one and am about to commit a fix. Same problem exists for empty getSelectedRows selections. This was causing the SEGVs. I also found the problem with gucharmap's CORBA_UNKNOWN error, which was caused by the at-spi implementation not expecting that no rows would be selected (silly!). Thanks for the bug report, I wouldn't have caught it without you.
(In reply to comment #3) > BTW, note that you _do_ have Accessibility_Table_getNSelectedRows and > getNSelectedColumns to work around this, as it only seems to happen with > zero-length sequences... > Are getNSelectedRows and getNSelectedColumns part of the at-spi spec? I don't see them in the doc at http://gnome.org/~billh/at-spi-new-idl/html/html/interfaceAccessibility_1_1Table.html.
Yes; they are in the Public Attributes section of that page.
I see them now. Thanks.