Bug 59987 - System.Data is close to unusable on watchOS
Summary: System.Data is close to unusable on watchOS
Status: CONFIRMED
Alias: None
Product: iOS
Classification: Xamarin
Component: BCL Class Libraries (show other bugs)
Version: master
Hardware: PC Mac OS
: --- normal
Target Milestone: Future Cycle (TBD)
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2017-10-05 15:15 UTC by Rolf Bjarne Kvinge [MSFT]
Modified: 2017-10-05 16:16 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Rolf Bjarne Kvinge [MSFT] 2017-10-05 15:15:06 UTC
System.Data contains a lot of code that uses exception filters:

> LLVM failed for 'XmlDataDocument.HasPointers': non-finally/catch/fault clause.
> LLVM failed for 'XmlDataDocument.OnFoliated': non-finally/catch/fault clause.
> LLVM failed for 'XmlDataDocument.SetRowValueFromXmlText': non-finally/catch/fault clause.
> LLVM failed for 'Constraint.CheckStateForProperty': non-finally/catch/fault clause.
> LLVM failed for 'ConstraintCollection.Clear': non-finally/catch/fault clause.
> LLVM failed for 'DataColumn.set_Expression': non-finally/catch/fault clause.
> LLVM failed for 'DataColumnCollection.BaseAdd': non-finally/catch/fault clause.
> LLVM failed for 'DataColumnCollection.Clear': non-finally/catch/fault clause.
> LLVM failed for 'DataRelation.CheckStateForProperty': non-finally/catch/fault clause.
> LLVM failed for 'DataSetRelationCollection.AddCore': non-finally/catch/fault clause.
> LLVM failed for 'DataRow.set_Item': non-finally/catch/fault clause.
> LLVM failed for 'DataRow.set_ItemArray': non-finally/catch/fault clause.
> LLVM failed for 'DataSet.SetLocaleValue': non-finally/catch/fault clause.
> LLVM failed for 'DataTable.RestoreIndexEvents': non-finally/catch/fault clause.
> LLVM failed for 'DataTable.set_Locale': non-finally/catch/fault clause.
> LLVM failed for 'DataTable.NewRecordFromArray': non-finally/catch/fault clause.
> LLVM failed for 'DataTable.RaiseRowChanged': non-finally/catch/fault clause.
> LLVM failed for 'DataTable.SetNewRecordWorker': non-finally/catch/fault clause.
> LLVM failed for 'DataView.OnListChanged': non-finally/catch/fault clause.
> LLVM failed for 'DataView.SetDataViewManager': non-finally/catch/fault clause.
> LLVM failed for 'DataViewManager.OnListChanged': non-finally/catch/fault clause.
> LLVM failed for 'DataExpression.Evaluate': non-finally/catch/fault clause.
> LLVM failed for 'DataExpression.ToBoolean': non-finally/catch/fault clause.
> LLVM failed for 'ExpressionParser.Parse': non-finally/catch/fault clause.
> LLVM failed for 'ExpressionParser.ParseAggregateArgument': non-finally/catch/fault clause.
> LLVM failed for 'Merger.MergeRelation': non-finally/catch/fault clause.
> LLVM failed for 'RecordManager.CopyRecord': non-finally/catch/fault clause.
> LLVM failed for 'Select.AcceptRecord': non-finally/catch/fault clause.
> LLVM failed for 'XDRSchema.GetMinMax': non-finally/catch/fault clause.
> LLVM failed for 'XmlTreeGen.SetMSDataAttribute': non-finally/catch/fault clause.
> LLVM failed for 'SchemaMapping.SetupSchemaWithoutKeyInfo': non-finally/catch/fault clause.
> LLVM failed for 'SchemaMapping.SetupSchemaWithKeyInfo': non-finally/catch/fault clause.
> LLVM failed for 'DataAdapter.FillLoadDataRowChunk': non-finally/catch/fault clause.
> LLVM failed for 'DataAdapter.FillLoadDataRow': non-finally/catch/fault clause.
> LLVM failed for 'DataAdapter.FillMapping': non-finally/catch/fault clause.
> LLVM failed for 'DataAdapter.FillNextResult': non-finally/catch/fault clause.
> LLVM failed for 'DataRecordInternal.GetBytes': non-finally/catch/fault clause.
> LLVM failed for 'DataRecordInternal.GetChars': non-finally/catch/fault clause.
> LLVM failed for 'DbDataAdapter.Update': non-finally/catch/fault clause.

Example: https://github.com/mono/corefx/blob/524e42629b39f500fb8ad5da467ece5256c38f31/src/System.Data.Common/src/System/Data/DataColumn.cs#L794

This doesn't work due to bug #58209 (LLVM compiler doesn't support exception filters when compiling to bitcode).

Solutions:

* Document that System.Data.dll is not supported.
* Modify System.Data.dll to use our own old mono code.
* Fix bug #58209 [The runtime team has said this is not planned any time soon].

Note You need to log in before you can comment on or make changes to this bug.