Greetings, We have an Accessibility *handle to an Application object (role = SPI_ROLE_APPLICATION). We called Accessible_ref(handle). At some time while we have this handle, the user kills the application with the mouse. We have introduced a routine, isAccessibleDead(Accessible *handle), where we try to determine if the object still exists by examining its state. During this testing, we get a segfault, most likely from Accessible_getStateSet(handle). We have exception handlers around this code and if we get a segfault we conclude the object is indeed dead. Our accessibility app continues to execute. At a later time, if the user clicks on any buried window on the desktop to bring it to the top, our accessibility app gets the segfault shown in the email below. So here's my question: What is the correct AT-SPI algorithm for determining that an Application object is gone? When the user kills the application, our app gets a window:deactivate event and a window:destroy event for the only direct child of Application object, an SPI_ROLE_FRAME object. My best guess for the algorithm is "if I receive a window:destroy for the frame of an application, mark the application as dead. Never use the Accessible *handle after that." Is that the it? It is a bug that we are getting a segfault when we call Accessible_getStateSet() on a ref'd Accessible *value, right? -Sam ________________________________
From: [email protected] [mailto:[email protected]] On Behalf Of Quiring, Sam Sent: Tuesday, March 17, 2009 4:15 PM To: [email protected] Subject: [g-a-devel] WARNING **: FIXME: wait for completion unimplemented Greetings, Does anyone know what this message means: ** (process:9316): WARNING **: FIXME: wait for completion unimplemented It comes out on the console of my Accessibility app near the same time as the stack dump shown below. This stack dump does not contain any code from my accessibility app -- I cause it to happen by switching among windows on my desktop. Any clues about what is going on here would be greatly appreciated. -Sam Stack Dump (the top frame was called by the 2nd frame, etc.) TCF 49:24.522: /usr/lib/libcspi.so.0 [0xb790e969] TCF 49:24.522: /usr/lib/libcspi.so.0 [0xb790abe2] TCF 49:24.523: /usr/lib/libcspi.so.0 [0xb790f1b2] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__POINTER+0x5a) [0xb7a300ba] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0 [0xb7a22079] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x129) [0xb7a23759] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0 [0xb7a3811a] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8ef) [0xb7a39c1f] TCF 49:24.523: /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29) [0xb7a39f69] TCF 49:24.523: /usr/lib/libspi.so.0 [0xb794fb2f] TCF 49:24.523: /usr/lib/libspi.so.0(_ORBIT_skel_small_Accessibility_EventListener_notif yEvent+0x1f) [0xb794202f] TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738a5c7] TCF 49:24.523: /usr/lib/libORBit-2.so.0(ORBit_OAObject_invoke+0x35) [0xb73907b5] TCF 49:24.523: /usr/lib/libORBit-2.so.0(ORBit_small_invoke_adaptor+0x4d0) [0xb737d910] TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738e424] TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738eaa2] TCF 49:24.523: /usr/lib/libORBit-2.so.0(giop_thread_queue_process+0xad) [0xb73763dd] TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb7376b26]
_______________________________________________ Gnome-accessibility-devel mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
