This project is read-only.
2
Vote

Crashes when UI Automation Client applcations are running

description

If UI Automation Clients are running and interrogate the WPF element tree containing an ExtendedDataGrid they crash. Applications which cause this include the Windows 7 utilities: "TabTip", "Narrator" and "Magnifier" (with Magnifier you have to turn on "Follow keyboard focus" and "Have magnifier follow the text insertion point").

There are at least two crash locations.

With Narrator the error is:

"An unhandled exception of type 'System.Resources.MissingManifestResourceException' occurred in mscorlib.dll
Additional information: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "ExceptionStringTable.resources" was correctly embedded or linked into assembly "ExtendedGrid" at compile time, or that all the satellite assemblies required are loadable and fully signed."

With call stack:

ExtendedGrid.dll!ExtendedGrid.Microsoft.Windows.Controls.SR.Get(ExtendedGrid.Microsoft.Windows.Controls.SRID id, object[] args) Line 25 + 0x21 bytes C# ExtendedGrid.dll!ExtendedGrid.Microsoft.Windows.Automation.Peers.DataGridCellItemAutomationPeer.GetNameCore() Line 127 + 0x7f bytes C#

Crashing here:
internal static class SR
{
...
         internal static string Get(SRID id, params object[] args)
         {
>>>>             string message = _resourceManager.GetString(id.String);
For Magnifier the error is:

"An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationCore.dll
Additional information: Recursive call to Automation Peer API is not valid."

With call stack:

ExtendedGrid.dll!ExtendedGrid.Microsoft.Windows.Automation.Peers.DataGridItemAutomationPeer.GetChildrenCore() Line 86 + 0xa bytes C#

Crashing here:
public sealed class DataGridItemAutomationPeer ...
{
...
protected override List<AutomationPeer> GetChildrenCore()
{
    AutomationPeer wrapperPeer = this.OwningRowPeer;

    if (wrapperPeer != null)
    {
>>>>        wrapperPeer.ResetChildrenCache();
For TabTip:

Identical to Magnifier.

We are still using a slightly old version of ExtendedDataGrid (dll version 2.0.0.17) but as far as we can see this area of the code has not changed.

Thanks,

Brian

comments